[ Window 창 만들기 ]
* 버튼을 누르면 '클릭됨'이 출력되는 윈도우창
|
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
|
package day13;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// 윈도우창 : Frame
// 350, 350 크기
/// 400, 400 위치
// 창 타이틀 : 이벤트 처리
// 이벤트 처리 순서
// 1. event source를 결정 : btn
// 2. event source에 감지기를 부착
// 3. handler를 정의
public class MyWin3 extends Frame{
// Frame : 컨테이너 ( > 조상 컨테이너를 상속 받음)
// MyWin3 : 컨테이너 ( > Frame을 상속 받아 컨테이너)
Button btn;
// 다른 컴포넌트를 담을 수 있는 컴포넌트 : 컨테이너
MyWin3(){
// 컴포넌트 초기화
btn = new Button("Click me");
// btn.add감지기종류Listener()
Handler hd = new Handler(); // 핸들러 객체 정의
// ActionListener (인터페이스를 구현한 객체); // 액션을 감지하는 수신기 추가
btn.addActionListener(hd);
//버튼 윈도우 추가
add(btn); // Frame의 기본 배치 관리자 : Border Layout, Center 추가
setTitle("이벤트 처리");
setSize(350, 350);
setLocation(400, 400);
setVisible(true);
}
public static void main(String[] args) {
MyWin3 mw = new MyWin3();
} // main method end
} // MyWin3 class end
// 하나의 자바파일에 하나의 클래스만 두는 것이 일반적..
// 하지만, 연관성이 있다면 2개 이상의 클래스를 정의하는 것도 가능
// public Class는 1개만 있어야 한다.
class Handler implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("클릭됨");
}
}
|
cs |
* 버튼을 누르면 '안녕하세요'가 출력되는 윈도우 창
|
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
|
package day13;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// 창 크기 : 300, 300
// 위치 : 250, 250
// 타이틀 : 이벤트 처리
// 화면 중앙에 버튼
// 버튼을 클릭하면 : 안녕하세요 메시지 이클립스 콘솔에 출력
// 이벤트 source : btn
// Frame 상속
public class MyWin4 extends Frame{
// 버튼 만들기
Button btn;
MyWin4() {
// 컴포넌트 초기화
btn = new Button("Hello~");
Handler2 hd = new Handler2(); // 핸들러 객체 정의
// 그냥 Handler로 하면 MyWin3의 내용이 출력됨
// 액션을 감지하는 수신기 추가
btn.addActionListener(hd);
add(btn); // 화면에 버튼 추가
setTitle("이벤트 처리");
setSize(300, 300);
setLocation(250, 250);
setVisible(true);
}
public static void main(String[] args) {
MyWin4 mw = new MyWin4();
}
class Handler2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("안녕하세요");
}
}
}
|
cs |
* Yes, No 버튼 장착하고 Yes가 출력되는 윈도우 창
|
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
|
package day13;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyWin5 extends Frame {
// Yes버튼, No버튼
Button btnYes, btnNo;
MyWin5() {
// 배치관리자를 변경
// FlowLayout
FlowLayout f1 = new FlowLayout();
setLayout(f1);
// Yes 버튼을 클릭하면 Yes라는 메세지가 콘솔에 출력
// Handler3 class <==
btnYes = new Button("Yes");
btnNo = new Button("No");
Handler3 hd = new Handler3(); // 핸들러 정의
btnYes.addActionListener(hd);
// btnYes.addActionListener(hd);
// 액션을 강조하는 리스너를 줘야 감지할 수 있음
add(btnYes);
add(btnNo);
// Yes 버튼, No 버튼
setSize(500, 500);
setLocation(150, 150);
setVisible(true);
}
public static void main(String[] args) {
MyWin5 mw = new MyWin5();
}
class Handler3 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Yes");
}
}
}
|
cs |
'Java' 카테고리의 다른 글
| [Java] Window 창 만들기 활용 / Login 창 만들기 / 이벤트 처리 순서 ( + 응용) (0) | 2023.03.21 |
|---|---|
| [Java] Object / Class / System 클래스의 메서드 (0) | 2023.03.20 |
| [Java] Garbage Collector (0) | 2023.03.20 |
| [Java] 객체 지향 클래스 - this, this(), super, super()의 차이점 (1) | 2023.03.17 |
| [Java] 객체 지향 클래스 ( static 변수 / java document / final 키워드 / identifier(변수의 명명규칙, 관습적 명명법) / 윈도우 창 만들기) (0) | 2023.03.17 |