์์ ๋ ์ง/์ ๋ฆฌ๋ ์ง
2022.05.03/2022.05.08
ํ์ต์ฃผ์
- 10 ์ด๋ฒคํธ ์ฒ๋ฆฌ
ํ์ต๋ด์ฉ
10 ์ด๋ฒคํธ ์ฒ๋ฆฌ
์ด๋ฒคํธ-๊ตฌ๋ ํ๋ก๊ทธ๋๋ฐ
โ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ค.
โป ๋ฒํผ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ์ฃผ์ฒด(ํค๋ณด๋ ๋๋ฆผ, ๋ง์ฐ์ค ์์ง์ ๋ฑ๋ ์ฃผ์ฒด๊ฐ ๋ ์ ์์)
โก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ค.
โป ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด์ง
โข ์ฝ๋๊ฐ ์คํ๋๋ค.
โป ์ด๋ฒคํธ ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค, Listener๋ผ๊ณ ํจ
โฃ ์ด๋ค ์์ ์ ์คํํ๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋
๋ฐ์๋ ์ด๋ฒคํธ ๊ฐ์ฒด์ ๋ฐ์ํ์ฌ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด
โป ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ๊ฐ์ฒด ์์ฑ๋ถ๊ฐ
์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ณผ์
// (1) ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๊ตฌํ(5๊ฐ์ง ๋ฐฉ๋ฒ)
class MyListener implements ActionListener{ // ActionListener: ์ด๋ฒคํธ ์ฒ๋ฆฌํ๋ ์ธํฐํ์ด์ค
public void actionPerformed(ActionEvents e){ // ์ค๋ฒ๋ผ์ด๋ฉ
// Action ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ฝ๋
}
}
// (2) ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ด๋ฒคํธ ์์ค(์ด๋ฒคํธ ๋ฐ์ ์ฃผ์ฒด)์ ๋ฑ๋ก
public class MyFrame extends JFrame{
public MyFlame(){
button = new JButton("๋์");
buttons.addActionListener(new MyListener()); // buttons: ์ด๋ฒคํธ๋ฐ์์ฃผ์ฒด, addActionListener: ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋ก์ํค๋ ๋๊ตฌ
}
}
์ด๋ฒคํธ ๊ฐ์ฒด
- EventObjectํด๋์ค์ ํ์ ํด๋์ค
- (ex) MouseEvent ํด๋์ค
java.lang.Object
java.util.EventObject
java.awt.AWTEvent
java.awt.event.ComponentEvent
java.awt.event.InputEvent
java.awt.event.MouseEvent
- ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์ด๋ฒคํธ ์์ค ๋ฑ, ์ด๋ฒคํธ ๊ด๋ จ ์ ๋ณด ์ ๊ณต
public void actionPerFormed(ActionEvent e){ // ActionEvent: ์ก์
์ด๋ฒคํธ ๊ฐ์ฒด
button = (JButton)e.getSource(); // JButton: ํ๋ณํ, e.getSource(): ๋งค๊ฐ๋ณ์์๋ ๋ฉ์๋
...
}
๋ค์ํ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฐฉ๋ฒ - 5๊ฐ์ง
- ๋ ๋ฆฝ์ ์ธ ํด๋์ค๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์์ฑ
- ๋ด๋ถ ํด๋์ค๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์์ฑ
- ํ๋ ์ ํด๋์ค๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํ
- ๋ฌด๋ช ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ๋๋ค์์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
โป 1 ~ 3๋ฒ: ํด๋์ค implements
#1 : Step1. Listener ๊ตฌํ, #2: Step2. ๋ฑ๋ก
1. ๋ ๋ฆฝ์ ์ธ ํด๋์ค ์์ฑ
import javax.swing.*;
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
JButton button = (JButton)e.getSource(); // ์ด๋ฒคํธ ๋ฐ์ ์ฃผ์ฒด๋ฅผ getํด ์ด
button.setText("๋ง์นจ๋ด ๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค."); // #1 - ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ฝ๋
// label.setText("๋ง์นจ๋ด ๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค.");
}
}
class MyFrame extends JFrame {
private JButton button;
private JLabel label;
public MyFrame() {
this.setSize(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("์ด๋ฒคํธ ์์ ");
JPanel panel = new JPanel();
button = new JButton("๋ฒํผ์ ๋๋ฅด์์ค");
label = new JLabel("์์ง ๋ฒํผ์ด ๋๋ ค์ง์ง ์์์ต๋๋ค");
button.addActionListener(new MyListener()); // #2 - ๋ฑ๋ก, new MyListener(): ์ค๋งค๊ฐ๋ณ์/๋ฌด๋ช
์ต๋ช
๊ฐ์ฒด
panel.add(button);
panel.add(label);
this.add(panel);
this.setVisible(true);
}
}
public class ActionEventTest1 {
public static void main(String[] args) {
MyFrame t = new MyFrame();
}
}
2. ๋ด๋ถ ํด๋์ค ๋ฐฉ๋ฒ
- MyListener๊ฐ ๋ณ๋์ ํด๋์ค๋ฉด MyFrame์ Private ๋ฉค๋ฒ์ ์ ๊ทผ ๋ถ๊ฐ
- ๋ฆฌ์ค๋ ํด๋์ค๋ฅผ ํ๋ ์ ํด๋์ค์ ๋ด๋ถ ํด๋์ค๋ก ์ ์ธํด ํด๊ฒฐ
import javax.swing.*;
class MyFrame extends JFrame {
private JButton button;
private JLabel label;
public MyFrame() {
this.setSize(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("์ด๋ฒคํธ ์์ ");
JPanel panel = new JPanel();
button = new JButton("๋ฒํผ์ ๋๋ฅด์์ค");
label = new JLabel("์์ง ๋ฒํผ์ด ๋๋ ค์ง์ง ์์์ต๋๋ค");
button.addActionListener(new MyListener());
panel.add(button);
panel.add(label);
this.add(panel);
this.setVisible(true);
}
private class MyListener implements ActionListener { // ๋ด๋ถ ํด๋์ค
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
label.setText("๋ง์นจ๋ด ๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค.");
}
}
}
}
public class ActionEventTest2 {
public static void main(String[] args) {
MyFrame t = new MyFrame();
}
}
3. MyFrame ํด๋์ค๊ฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- MyFrame ํด๋์ค๊ฐ, JFrame ํด๋์ค ์์(ํ๋ ์ ์ญํ ) / ActionListener ์ธํฐํ์ด์ค ๊ตฌํ(์ด๋ฒคํธ ์ฒ๋ฆฌ)
- ์ฆ, ํ๋ ์ ํด๋์ค๊ฐ actionPerformed(ActionEvent e)๋ฅผ ๋ฉค๋ฒ ํจ์๋ก ์ง์ overriding
import javax.swing.*;
class MyFrame extends JFrame implements ActionListener { // MyFrame - Frame์ ํ ์ข
๋ฅ, ActionPerFormed ์ค๋ฒ๋ผ์ด๋ฉ
private JButton button;
private JLabel label;
public MyFrame() { // #2 - ๋ฑ๋ก
this.setSize(280, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("์ด๋ฒคํธ ์์ ");
JPanel panel = new JPanel();
button = new JButton("๋ฒํผ์ ๋๋ฅด์์ค");
label = new JLabel("์์ง ๋ฒํผ์ด ๋๋ ค์ง์ง ์์์ต๋๋ค");
button.addActionListener(this); // this: ๋ฐ๋ก ์ด๋ฆx, ์๊ธฐ ์์ ์ด ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ฝ๋๋ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ
panel.add(button);
panel.add(label);
this.add(panel);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) { // #1 - ์ด๋ฒคํธ์ฒ๋ฆฌ์ฝ๋ / ์ค๋ฒ๋ผ์ด๋ฉ
if (e.getSource() == button) {
label.setText("๋ง์นจ๋ด ๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค.");
}
}
}
public class ActionEventTest3 {
public static void main(String[] args) {
MyFrame t = new MyFrame();
}
}
4. ๋ฌด๋ช ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๋ฌด๋ช ํด๋์ค: new๋ก ์์, ๋ถ๋ชจํด๋์ค์ด๋ฆ( ){ };
import javax.swing.*;
class MyFrame extends JFrame {
private JButton button;
private JLabel label;
public MyFrame() {
this.setSize(280, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("์ด๋ฒคํธ ์์ ");
JPanel panel = new JPanel();
button = new JButton("๋ฒํผ์ ๋๋ฅด์์ค");
label = new JLabel("์์ง ๋ฒํผ์ด ๋๋ ค์ง์ง ์์์ต๋๋ค");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { // ActionListener์์ ๋ฐ์ ActionPerformed ์ค๋ฒ๋ผ์ด๋ฉ
if (e.getSource() == button) { // ๋ฐ์์ฃผ์ฒด๋๊น if ์์ด๋ ๋จ
label.setText("๋ง์นจ๋ด ๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค.");
}
}
}); // new ActionListener()๋ถํฐ }๊น์ง ๋ฌด๋ช
ํด๋์ค
panel.add(button);
panel.add(label);
this.add(panel);
this.setVisible(true);
}
}
public class ActionEventTest4 {
public static void main(String[] args) {
MyFrame t = new MyFrame();
}
}
5. ๋๋ค์์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
import javax.swing.*;
class MyFrame extends JFrame {
private JButton button;
private JLabel label;
public MyFrame() {
this.setSize(280, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("์ด๋ฒคํธ ์์ ");
JPanel panel = new JPanel();
button = new JButton("๋ฒํผ์ ๋๋ฅด์์ค");
label = new JLabel("์์ง ๋ฒํผ์ด ๋๋ ค์ง์ง ์์์ต๋๋ค");
button.addActionListener(e -> { // ๋๋ค์: ( ) -> { } / returnํ์
&์ด๋ฆ ํ์x, ๋งค๊ฐ๋ณ์๋ง ํ์
label.setText("๋ง์นจ๋ด ๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค.");
});
panel.add(button);
panel.add(label);
this.add(panel);
this.setVisible(true);
}
}
public class ActionEventTest5 {
public static void main(String[] args) {
MyFrame t = new MyFrame();
}
}
์ค์ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ
- ์ ์์ค ์ด๋ฒคํธ: ๋ชจ๋ ์ปดํฌ๋ํธ ๊ณตํต์ ์ผ๋ก ๋ฐ์
- ์๋ฏธ์ ์ด๋ฒคํธ: ์ผ๋ถ ์ปดํฌ๋ํธ ์ง์
์ ์์ค ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ณธ ์ด๋ฒคํธ๋ผ๊ณ ์ดํดํ๊ธฐ
์ ์์ค ์ด๋ฒคํธ: Mouse, MouseMotion, Key, Component, Container, Focus, Window
์๋ฏธ์ ์ด๋ฒคํธ: Action, Adjustment, Document, Item, Text
์ก์ ์ด๋ฒคํธ
- ๋ฒํผ ํด๋ฆญ
- ๋ฉ๋ด ํญ๋ชฉ ์ ํ
- ํ ์คํธ ํ๋์์ [enter key] ์ ๋ ฅ
- ํ์ด๋จธ ์ด๋ฒคํธ
์ด๋ฒคํธ ๋ฐ์์์ ์๋ณ
- getSource(): ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ๊ฐ์ฒด(Object) ๋ฐํ
- getId(): ์ด๋ฒคํธ ํ์ (int) ๋ฐํ
- getActionCommand(): ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์ปดํฌ๋ํธ ์ด๋ฆ(String) ๋ฐํ
ํ์ต๋ด์ฉ ์ดํด๋
75% ์ ๋. ๊ทธ๋์ ํ๋ ๊ฒ์ ๋นํด ๋ ์ด๋ ต๋ค๊ณ ๋๊ปด์ง๋ค.
ํ์ตํ๋ ๋์๋ณด๊ธฐ
์ด๋ฒ์ ๋ฐฐ์ด ๋ด์ฉ์ ๊ทธ ์ ๋ด์ฉ๋ค๋ณด๋ค ๋ ์ด๋ ต๋ค๊ณ ๋๊ปด์ก๋ค. 5๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ณ , ์ด ๋ฐฉ๋ฒ์ ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๊ฟ ์ ์๊ณ .. ActionListener, ActionPerformed, ActionEvent... ํท๊ฐ๋ฆฐ๋ค. ์ดํ ๋ ์์๋ด์ผ๊ฒ ๋ค.
์ดํ ๋ ๊ณต๋ถํ ์ , ์๋ฌธ์
1. ActionListener์ ์ญํ (๊ฐ์ง์์ธ๋ฐ ์ ํํ ์ด๋ค์ผ์ ํ๋์ง, ์ด๋ค ๋ฐฉ์์ธ์ง)
2. ActionListener์ ActionPerfomred์ ActionEvent์ ๊ด๊ณ
๋ค์ ํ์ต๊ณํ
์ด๋ฒคํธ ์ฒ๋ฆฌ2
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐํ๋ก๊ทธ๋๋ฐ 11์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.05.22 |
---|---|
์๋ฐํ๋ก๊ทธ๋๋ฐ 10์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.05.15 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 7์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.25 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 6์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.16 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 5์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.09 |