Cute Apple
본문 바로가기
개발/java

java 쇼핑몰 GUI(2)

by 미댕댕 2021. 5. 24.

 

 

step4

1. Product Main 디자인을 한다.

 

<작업 결과물>

 

- ProductMain.java (스압주의)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package com.mijin.shopping.product;
 
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dimension;
 
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
 
import com.mijin.shopping.main.Page;
 
//상품관리 메인 페이지
public class ProductMain extends Page{
    //서쪽관련
    JPanel p_west;
    Choice ch_top;
    Choice ch_sub;
    JTextField t_product_name;
    JTextField t_price;
    JTextField t_brand;
    JTextArea t_detail;
    JScrollPane scroll;
    JButton bt_web; //웹에서 가져오기
    JButton bt_file; //로컬 파일에서 가져오기
    Canvas can;
    JButton bt_regist;
    
    //센터관련 
    JPanel p_center;
    JPanel p_search; //검색 컴포넌트들 올려놓을 패널 
    Choice ch_category;//검색 카테고리 선택
    JTextField t_keyword;//검색어 입력
    JButton bt_search; 
    JTable table;
    JScrollPane scroll_table;
 
    //동쪽관련
    JPanel p_east;
    Choice ch_top2;
    Choice ch_sub2;
    JTextField t_product_name2;
    JTextField t_price2;
    JTextField t_brand2;
    JTextArea t_detail2;
    JScrollPane scroll2;
    JButton bt_web2; //웹에서 가져오기
    JButton bt_file2; //로컬 파일에서 가져오기
    Canvas can2;
    JButton bt_regist2;
 
 
    public ProductMain() {
        setBackground(Color.YELLOW);
 
        //서쪽 영역 생성 
        p_west= new JPanel();
        ch_top = new Choice();
        ch_sub = new Choice();
        t_product_name = new JTextField();
        t_price = new JTextField();
        t_brand = new JTextField();
        t_detail = new JTextArea();
        scroll = new JScrollPane(t_detail);
        bt_web = new JButton("웹에서찾기");
        bt_file = new JButton("파일찾기");
        can = new Canvas();
        bt_regist = new JButton("상품등록");
        
        //센터 영역 생성 
        p_center = new JPanel();
        p_search = new JPanel();
        ch_category = new Choice();
        t_keyword = new JTextField();
        bt_search = new JButton("search");
        table = new JTable(107);
        scroll_table = new JScrollPane(table);
 
        //동쪽 영역 생성 
        p_east= new JPanel();
        ch_top2 = new Choice();
        ch_sub2 = new Choice();
        t_product_name2 = new JTextField();
        t_price2 = new JTextField();
        t_brand2 = new JTextField();
        t_detail2 = new JTextArea();
        scroll2 = new JScrollPane(t_detail);
        bt_web2 = new JButton("웹에서찾기");
        bt_file2 = new JButton("파일찾기");
        can2 = new Canvas();
        bt_regist2 = new JButton("상품등록");
 
 
        //스타일 및 레이아웃 
        setLayout(new BorderLayout());
 
        Dimension d = new Dimension(180,30); //공통 크기
        //서쪽 관련
        p_west.setPreferredSize(new Dimension(200700));
        scroll.setPreferredSize(new Dimension(180300));
        ch_top.setPreferredSize(d);
        ch_sub.setPreferredSize(d);
        t_product_name.setPreferredSize(d);
        t_price.setPreferredSize(d);
        t_brand.setPreferredSize(d);
 
        //동쪽관련
        p_east.setPreferredSize(new Dimension(200700));
        scroll2.setPreferredSize(new Dimension(180300));
        ch_top2.setPreferredSize(d);
        ch_sub2.setPreferredSize(d);
        t_product_name2.setPreferredSize(d);
        t_price2.setPreferredSize(d);
        t_brand2.setPreferredSize(d);
        
        //센터관련 
        ch_category.setPreferredSize(d);
        t_keyword.setPreferredSize(new Dimension(38030));
        p_search.add(ch_category);
        p_search.add(t_keyword);
        p_search.add(bt_search);
        p_center.setLayout(new BorderLayout());
        p_center.add(p_search, BorderLayout.NORTH);//검색 패널을 북쪽에 부착!!
        p_center.add(scroll_table);
 
        //서쪽조립 
        p_west.add(ch_top);
        p_west.add(ch_sub);
        p_west.add(t_product_name);
        p_west.add(t_price);
        p_west.add(t_brand);
        p_west.add(scroll);
        p_west.add(bt_web);
        p_west.add(bt_file);
        p_west.add(can);
        p_west.add(bt_regist);
 
        //동쪽조립
        p_east.add(ch_top2);
        p_east.add(ch_sub2);
        p_east.add(t_product_name2);
        p_east.add(t_price2);
        p_east.add(t_brand2);
        p_east.add(scroll2);
        p_east.add(bt_web2);
        p_east.add(bt_file2);
        p_east.add(can2);
        p_east.add(bt_regist2);
 
        add(p_west, BorderLayout.WEST);//서쪽영역에 부착 
        add(p_east, BorderLayout.EAST);//서쪽영역에 부착 
        add(p_center);//센터영역에 부착 
 
        //리스너 연결 
 
    }
}
cs

 

 

step 5

1. DB를 AppMain에서 연결한다.

 

- AppMain.java 추가 코드

 

생성자 맨 앞에 추가

 

 

step 6

1. DB에 있는 리스트 가져오기 위한 준비

  - ProductMain.java에서 AppMain에 있는 Connection 객체를 사용하기 위해서는 AppMain을 가져와야한다.

  - Page에 AppMain을 선언해주고 Page를 상속받은 ProductMain에 super 생성자로 appMain을 받아온다.

 

 

- Page.java 추가/변경 코드

AppMain에서 보내온 this 즉 AppMain 자체를 받아서 사용한다.

 

- ProductMain.java 추가 코드

 

 

-AppMain 추가/변경 코드

Page 클래스에 매개변수를 선언하연기 때문에 this 추가
con이 private 이기 때문에 사용하기위한 세터

 

 

step7

1. DB에서 Topcategory 가져오기

  - getTopList 함수를 생성하여 select 쿼리를 날린다.

  - pstmt 와 rs를 닫기 위한 함수를 생성해주어 사용성을 높인다.

 

<작업 결과물>

 

- ProductMain.java 추가 코드

-AppMain.java 추가 코드

오버로딩을 통해 함수를 정의한다.

 

 

 

step 8

1. 여기서 top카테고리에 알맞는 sub카테고리를 가져와야하는데 Choice는 html 과 다르게 value를 담을 수 없다.

   따라서 List라는 복합데이터 형태로 만들어야한다

 - 이런 복합데이터를 담기위한 클래스를 VO라고 하며 html 에서 JSON과 비슷한 역할을 한다.

 

 

<작업 파일>

 

 

- Topcategory.java

각 데이터들을의 id와 name을 정의해주는 클래스이다.

은닉화하여 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.mijin.shopping.model.domain;
 
public class Topcategory {
    private int topcategory_id;
    private String top_name;
    
    public int getTopcategory_id() {
        return topcategory_id;
    }
    public void setTopcategory_id(int topcategory_id) {
        this.topcategory_id = topcategory_id;
    }
    public String getTop_name() {
        return top_name;
    }
    public void setTop_name(String top_name) {
        this.top_name = top_name;
    }
}
cs

 

- Subcategory.java

각 데이터들을의 id와 name을 정의해주는 클래스이다.

은닉화하여 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.mijin.shopping.model.domain;
 
public class Subcategory {
    private int subcategory_id;
    private int topcategory_id;
    private String sub_name;
    public int getSubcategory_id() {
        return subcategory_id;
    }
    public void setSubcategory_id(int subcategory_id) {
        this.subcategory_id = subcategory_id;
    }
    public int getTopcategory_id() {
        return topcategory_id;
    }
    public void setTopcategory_id(int topcategory_id) {
        this.topcategory_id = topcategory_id;
    }
    public String getSub_name() {
        return sub_name;
    }
    public void setSub_name(String sub_name) {
        this.sub_name = sub_name;
    }
    
    
}
cs

 

 

- ProductMain.java 추가 코드

topcategory 를 불러오면서 각 id와 name을 rs에 담겨있는 각 요소들을 추출하여 topList에 넣어준다

 

 

 

 

step 9

1. Topcategory 중 1개가 선택되었을때 그에 맞는 Subcategory를 가져오기

  - 우선 선택한 pk 값이 무엇인지 구해온다.

  - 여기서 맨처음 값은 choose your category로 설정한다.

 

<작업 결과물>

 

-ProductMain.java 추가 코드

getTopList 함수에 choose you category 추가

 

 

 

2. Choice 번호를 이용하여 ArrayList 객체 꺼내기

  - topList.get을 이용하여 클릭한 index번호의 객체를 가져와서 getter로 id를 가져온뒤 getSubList 함수의 매개변수로      보내준다.

 

-ProductMain.java 추가 코드

 

 

step 10

1. 받아온 id 값으로 subcategory 보여주기

  - sql문을 적용하여 값을 가져온뒤 subcategory 객체를 생성하여 그안에 값들을 setter로 담아주고 ArrayList에도 담아준다.

   - 새로운 topcategory 클릭시 계속 subcategory가 choice 안에 쌓이는것을 막기위하여 removeall 함수로 제거해준다.

 

 

<작업 결과물>

 

 

-ProductMain.java 추가 코드

 

반응형

'개발 > java' 카테고리의 다른 글

java 쇼핑몰 GUI(4)  (0) 2021.05.25
java 쇼핑몰 GUI(3)  (0) 2021.05.24
java 쇼핑몰 GUI (1)  (0) 2021.05.23
java Editplus / Eclipse에 .jar 추가 방법  (0) 2021.05.23
java 갤러리  (0) 2021.05.17

댓글