오늘은 자바에서 사용하는
ActionListener을 어떻게 사용하는가?
에 대해서 같이 알아보도록 하겠습니다.
저 같은 경우에는 처음에 ActionListener을 봤을 때에
전혀 이해가 되지 않았는데, 자주 보고 또 타이핑을
하다 보니 어느새 익숙해져서 저도 모르게
이해가 되어버렸습니다.
하지만 이해하기까지 시행착오가 많았기에
최대한 간단하게 알려드리겠습니다.
자 여기서 왼쪽 아래에 있는
"Plus" 버튼을 누르면 화면 중앙에 있는
숫자가 하나씩 올라가는 코드를
작성하려고 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
// btnPlus를 선택했을때
if(btnPlus.equals(ae.getSource())){
String strNum = lblNum.getText();
// 숫자를 증가시키기 위해서 문자형태인 strNum을
// 정수 형태로 변환시킵니다.
int num = Integer.parseInt(strNum);
num++;
// JLabel안에 입력하는 문자는 String이기 때문에
// 정수의 형태인 num을 String의 형태로 변환시킵니다.
strNum = String.valueOf(num);
lblNum.setText(strNum);
}
}
};
btnPlus.addActionListener(listener);
|
cs |
"ActionListener"이라는 interface 안에
actionPerformed를 @Override해서
해당 메소드안에 실행코드를 입력하시면
지정한 Component의 액션이 발생했을 때,
실행코드가 작동하게 됩니다.
<전체 코드>
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
|
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ActionListenerEx extends JFrame {
private JLabel lblNum;
private JButton btnPlus;
private JButton btnMinus;
private JButton btnReset;
public ActionListenerEx() {
init();
setDisplay();
addListener();
showFrame();
}
// 구성
private void init() {
lblNum = new JLabel("0", JLabel.CENTER);
lblNum.setText("0");
lblNum.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 40));
btnPlus = new JButton();
btnPlus.setText("Plus");
btnMinus = new JButton();
btnMinus.setText("Minus");
btnReset = new JButton();
btnReset.setText("Reset");
}
// 배치
private void setDisplay() {
JPanel pnlSouth = new JPanel(new GridLayout(1,0));
pnlSouth.add(btnPlus);
pnlSouth.add(btnMinus);
pnlSouth.add(btnReset);
add(lblNum, BorderLayout.CENTER);
add(pnlSouth, BorderLayout.SOUTH);
}
private void addListener() {
// ActionListener 객체를 생성하고
// 인터페이스 안에 있는 메소드를 사용하기 위해
// @Override을 사용합니다.
// actionPerformed 라고 적힌 이 메소드안에
// 해당 Component를 선택했을때, 실행되는
// 코드를 작성하시면 됩니다.
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
// btnPlus를 선택했을때
if(btnPlus.equals(ae.getSource())){
String strNum = lblNum.getText();
// 숫자를 증가시키기 위해서 문자형태인 strNum을
// 정수 형태로 변환시킵니다.
int num = Integer.parseInt(strNum);
num++;
// JLabel에 들어가는 파라미터값은 String이기 때문에
// int 형태인 num을 String의 형태로 변환합니다.
strNum = String.valueOf(num);
lblNum.setText(strNum);
}
if(btnMinus.equals(ae.getSource())){
String strNum = lblNum.getText();
int num = Integer.parseInt(strNum);
num--;
strNum = String.valueOf(num);
lblNum.setText(strNum);
}
if(btnReset.equals(ae.getSource())){
lblNum.setText("0");
}
}
};
// 위에서 해당 Component를 실행했을때,
// 코드를 작성했다면 마무리로
// addActionListener(listener); 추가 필요
// 이를 추가하지 않을시에는 해당 액션이 발생하지 않습니다.
btnPlus.addActionListener(listener);
btnMinus.addActionListener(listener);
btnReset.addActionListener(listener);
}
// 프레임 설정
private void showFrame() {
setTitle("Counter");
setSize(300,400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
//
public static void main(String[] args) {
new ActionListenerEx();
}
}
|
cs |
'New Programming > Java' 카테고리의 다른 글
자바 숫자 맞추기 게임 (0) | 2023.03.24 |
---|---|
자바 설치 방법, JDK 설치, 환경 변수 설정 (0) | 2023.03.06 |
<자바> break 문 - 흐름 제어문 (0) | 2020.07.14 |
<자바> 스레드 시계 - Thread Clock + 시계 멈추기 (0) | 2020.07.12 |
<자바> Custom Cursor 설정하기 (0) | 2020.07.07 |