Java - javax.swing, GUI,JFrame

2020. 7. 2. 23:16Java

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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
import javax.swing.JFrame;
 
public class Ex extends JFrame{
    
    /*
     * 자바 GUI 구현
     * -javax.swing 패키지(자바스윙)를 사용하여 다양한 화면 및 기능 구현
     * -FRrame 객체를 사용하여 윈도우(프레임)를 생성한 뒤
     * 다양한 컴포넌트(버튼,체크박스 등)를 조합하여 원하는 기능의 창 구현
     * 
     * 1.JFrame 클래스를 상속받아 직접 JFrame 객체를 다루는 방법
     * 2.JFrame 클래스의 인스턴스를 생성하여 JFrame 객체를 다루는 방법
     */
    
    public Ex() {
        super("JFrame 연습");
        showFrame();
    }
    
    
    
    
    private void showFrame() {
        //1.JFrame 클래스를 상속받아 직접 JFrame 객체를 다루는 방법
        setSize(300200);//프레임 크기(가로,세로) 지정
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);//프레임 표시 여부 설정
        
        
        // 2.JFrame 클래스의 인스턴스를 생성하여 JFrame 객체를 다루는 방법
        JFrame secondFrame=new JFrame("두번째 프레임");
        secondFrame.setSize(500400);
//        secondFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //EXIT_ON_CLOSE : 닫기 버튼 클릭 시 프로그램 전체 종료됨(다른 프레임도 제거됨)
        secondFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        //DISPOSE_ON_CLOSE : 닫기 버튼 클릭시 현재 프레임 객체만 종료됨
        secondFrame.setVisible(true);
        
        //-----------------------------------------
        //세 번째 프레임 생성 : 크기(400,400) 닫기 동작 : 프로그램 종료
        JFrame thirdFrame=new JFrame();
//        thirdFrame.setSize(400, 400);
//        thirdFrame.setLocation(600, 400);//프레임 표시 위치 지정(가로,세로)
        
        //setBounds(x,y,width,height) = setLocation() + setSize()
        thirdFrame.setBounds(600400400400);
        
        thirdFrame.setTitle("세번째 프레임");//프레임 제목표시줄 텍스트 지정
        
        thirdFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        thirdFrame.setVisible(true);
        
        
    }
 
 
 
 
    public static void main(String[] args) {
        
        new Ex();
        
    }
}
 
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
 
import javax.swing.JFrame;
 
public class Ex2 extends JFrame {
 
    public Ex2() {
        showFrame();
        
    }
    
    
    private void showFrame() {
        //컴포넌트 크기나 위치(좌표) 정보를 관리하는 별도의 클래스가 제공됨
        //java.awt.Dimension : 크기 정보 관리하는 객체
        //java.awt.Point : 위치 정보 관리하는 객체
        //java.awt.Rectangle : 위치, 크기 정보 관리하는 객체
        
//        setSize(200, 200);
        //width, height 값을 갖는 크기 정보를 Dimension타입 객체에 저장 가능
        
        Dimension dim=new Dimension(200200);//width, height 순서로 지정
//        setSize(dim);
        
//        setLocation(500, 400);
        //x,y좌표값을 갖는 좌표 정보를 Point 타입 객체에 저장 가능
        
        Point pt=new Point(500400);// x,y 순서로 지정
//        setLocation(pt);
        
//        setBounds(500, 400, 200, 200);
        //Dimension 객체와 Point 객체 값을 갖는 크기 및 좌표 위치 정보를 Rectangle 타입객체에 저장가능
        Rectangle bounds=new Rectangle(pt,dim);
        setBounds(bounds);
        
        
        
        setTitle("test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        
        setVisible(true);
        
    }
 
 
 
 
 
 
    public static void main(String[] args) {
        new Ex2();
    }
 
}
 
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class Ex3 extends JFrame{
 
    public Ex3() {
        showFrame();
    }
    
    private void showFrame() {
        Rectangle rt=new Rectangle(500400300200);
        setBounds(rt);
        setTitle("버튼연습");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        /*
         * 컴포넌트(Component) 사용
         * javax.swing 패키지에 다양한 컴포넌트가 제공됨
         * JButton ,JChecoBox,JRadioButton 등 여러형태의 컴포넌트 클래스 사용
         * 컴포넌트는 단독으로 사용되지 못하며, 패널이나 프레임에 부착하여 사용
         */
        
        //JButton 클래스의 인스턴스를 생성하여 버튼 객체 1개 생성
        JButton btn=new JButton("버튼클릭");
        
        // JFrame 객체의 add()메서드를 호출하여 버튼객체 전달=버튼 부착
        add(btn);
        
        btn.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("버튼클릭됨");
            }
        });
        
        
        
        setVisible(true);
        
        
    }
 
    public static void main(String[] args) {
        new Ex3();
    }
 
}
 
 
cs

 

 

JFrame에 대해 간단하게 배워보았다. 적용하고자 하는 클래스에 JFrame을 상속하고

생성자를 생성한후 생성자 안에 show.JFrame(); 을 선언하고 메서드를 생성하고 안에서 위에 보이는 여러 코드들을 입력하여 새로운 창을 만들어서 많은 기능들을 만들어보고 연습할 수 있다. Java로도 JSP와 비슷한 느낌을 주는 눈앞에 바로바로 결과물이 보이는 작업들을 할 수 있게 되니 좀 더 흥미롭게 공부를 해나갈 수 있겠다.

'Java' 카테고리의 다른 글

Java - InnerClass  (0) 2020.07.06
Java - JFrame  (0) 2020.07.06
Java - Thread,synchronized  (0) 2020.07.02
Java - Thread  (0) 2020.07.02
Java - throw,throws  (0) 2020.07.02