๐ ์ด๋ฒคํธ : ์ฌ์ฉ์๊ฐ UI ์ปดํฌ๋ํธ์ ์ํธ์์ฉํ ๋ ๋ฐ์ํ๋ ์ฌ๊ฑด
์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ์ด๋ฒคํธ ์์ค(Source), ์ด๋ฒคํธ ๊ฐ์ฒด(Object), ์ด๋ฒคํธ ๋ฆฌ์ค๋(Listener)๊ฐ ํ์ํ๋ค.
- ์ด๋ฒคํธ ์์ค : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๊ฐ์ฒด
- ์ด๋ฒคํธ ๊ฐ์ฒด : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์์ฑ๋๋ ๊ฐ์ฒด๋ก, ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ค.
- ๋ชจ๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ EventObject ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค. EventObject ํด๋์ค๋ getSource() ๋ฉ์๋๋ง์ ๊ฐ์ง๊ณ ์๋ค. getSource()๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ํ ์ด๋ฒคํธ ์์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๋ก, Object ํ์ ์ผ๋ก ๋ฐํํ๊ธฐ์ ํ์ํ ํ์ ์ผ๋ก ํ๋ณํํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์คํ๋๋ ๋์์ ์ ์ํ๋ ์ธํฐํ์ด์ค๋ก, ์์ ํ์ฌ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
- ๋ฑ๋ก๋ ๋ฆฌ์ค๋๊ฐ ์๋ค๋ฉด ์๋ฌด ์ผ๋ ๋ฐ์ํ์ง ์๋๋ค.
< ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํ ํจํค์ง >
import java.awt.event.*;
< ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋จ๊ณ >
- ์ด๋ฒคํธ ์์ค ์์ฑ : ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ปดํฌ๋ํธ ์์ฑ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก : ์ฌ์ฉ์๋ ๋ฆฌ์ค๋ ํด๋์ค๋ฅผ ์์ฑํ๊ณ , ํด๋น ๋ฆฌ์ค๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐํด์ผ ํ๋ค.
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์ฑ๋ฒ
1. ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค ๊ตฌํ
2. ์ด๋ฒคํธ ์์ค์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์ฑ๋ฒ
- ์ด๋ฒคํธ ๋ฐ์ ๋ฐ ์ฒ๋ฆฌ : ์ฌ์ฉ์๊ฐ ์ปดํฌ๋ํธ์ ์ํธ์์ฉํ ๋, ์ง์ ํ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ๋ฆฌ์ค๋๊ฐ ํธ์ถ๋์ด ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ฃผ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค
ActionListener | ๋ฒํผ ํด๋ฆญ, ๋ฉ๋ด ์ ํ๊ณผ ๊ฐ์ ์ก์ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
KeyListener | ํค๋ณด๋ ์ ๋ ฅ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
MouseListener | ๋ง์ฐ์ค ํด๋ฆญ ๋ฐ ์์ง์ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
WindowListener | ์ฐฝ์ ์ด๊ณ ๋ซ๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
FocusListener | ์ปดํฌ๋ํธ๊ฐ focus๋ฅผ ์ป๊ณ ์์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ตฌํ๋ฒ
- ๋ณ๋์ ํด๋์ค์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
- ์ฌ๋ฌ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ ๋ ์ ์ฉํ๋ค.
- ๋ฆฌ์ค๋ ํด๋์ค๋ฅผ ๋ด๋ถ ํด๋์ค๋ก ์์ฑ
: ๋ด๋ถ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค ์์ ์์นํ๋ ํด๋์ค๋ก, ๋ด๋ถ ํด๋์ค๋ ์ธ๋ถ ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์๋ค์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋ค. - MyFrame ํด๋์ค์ JFrame ์์ ๋ฐ ActionListener ์ธํฐํ์ด์ค ๊ตฌํ
- MyFrame ํด๋์ค ์์๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ๋ด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
- ๋ฌด๋ช
ํด๋์ค ์ฌ์ฉ
: ์ด๋ฆ์ด ์๋ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ํ ๋ฒ๋ง ์ฌ์ฉํ๋ ๊ฒ- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ์ฌ ํน์ ์ด๋ฒคํธ๋ง ์ฒ๋ฆฌํ ๋ ์ ์ฉํ๋ค.
๐ ๋ฌด๋ช ํด๋์ค ์ฌ์ฉ ์ฝ๋ ( ํ์ ์ดํดํ๊ธฐ )
import javax.swing.*;
import java.awt.event.*;
public class EventExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Event Example");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click Me");
//๋ฌด๋ช
ํด๋์ค๋ ActionListener ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค.
button.addActionListener(new ActionListener() {
@Override
// ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค Button clicked!๊ฐ ์ถ๋ ฅํ๋๋ก ์ ์
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked!");
}
});
frame.add(button);
frame.setVisible(true);
}
}
๐ ์ก์ ์ด๋ฒคํธ (Action Event)
: ์ฌ์ฉ์์ ํน์ ์ก์ ์ ์ํํ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ
- ์ฃผ์ ์ก์
๋ฐ์ ์ปดํฌ๋ํธ
- JButton : ๋ฒํผ ํด๋ฆญ
- JMenuItem : ๋ฉ๋ด ์ ํ
- JTextField : ํ ์คํธ ํ๋์์์ ์ํฐํค ํด๋ฆญ
- ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ : ActionListener ์ธํฐํ์ด์ค ๊ตฌํ.
- ActionListener ์ธํฐํ์ด์ค๋ actionPerformed(ActionEvent e)๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
ํด๋น ๋ฉ์๋์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ActionListener ์ธํฐํ์ด์ค๋ actionPerformed(ActionEvent e)๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๐ ํค ์ด๋ฒคํธ (Key Event)
: ์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ฅผ ๋๋ฅผ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ
- ์ฃผ์ ์ก์
๋ฐ์ ์ปดํฌ๋ํธ
- keyTyped(KeyEvent e) : ๋ฌธ์ ์ ๋ ฅ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ
- keyPressed(KeyEvent e) : ํค๋ณด๋๊ฐ ๋๋ ธ์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ
- keyReleased(KeyEvent e) : ํค๋ณด๋์์ ๋ผ์ด์ก์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ
- ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ : KeyListener ์ธํฐํ์ด์ค ๊ตฌํ
- KeyListener ์ธํฐํ์ด์ค๋ ์์ ์ก์ ๋ฐ์ ์ปดํฌ๋ํธ์ ๋ฉ์๋ 3๊ฐ์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ํค ์ด๋ฒคํธ์ ํด๋์ค
int getKeyChar() ํค ์ด๋ฒคํธ์ ๋ค์ด์๋ ๊ธ์(์ ๋์ฝ๋) ๋ฐํ int getKeyCode() ํค ์ด๋ฒคํธ์ ๋ค์ด์๋ ์ํ์ ํค ์ฝ๋ ๋ฐํ
๐ ๋ง์ฐ์ค ์ด๋ฒคํธ (Mouse Event)
: ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ ์ ๋ ฅ์ ํ์์ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ
- ์ ์ ๋ง์ฐ์ค ์ด๋ฒคํธ : ๋ง์ฐ์ค์ ์ํ๊ฐ ํน์ ์์ ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ
(ํด๋ฆญ, ๋๋ฆผ ๋ผ์ด์ง ๋ฑ)- MouseListener ์ธํฐํ์ด์ค ์ฌ์ฉ
- ๋์ ๋ง์ฐ์ค ์ด๋ฒคํธ : ๋ง์ฐ์ค๊ฐ ์์ง์ด ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ
(์ด๋, ๋๋ ๊ทธ ๋ฑ)- MouseMotionListener ์ธํฐํ์ด์ค ์ฌ์ฉ
๐ซ์ด๋ํฐ ํด๋์ค๐ซ
์ด๋ํธ ํด๋์ค์ ํ์์ฑ : ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐํธํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ์ ๊ณต๋๋ ์ถ์ ํด๋์ค๋ก, ์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ ํด๋น ์ธํฐํ์ด์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ ํด๋์ค์ด๋ค.
- ํ์ํ์ง ์์ ๋ฉ์๋๋ฅผ ๊ฐ์ ๋ก ๊ตฌํํ์ง ์์๋ ๋๊ธฐ์, ์ฝ๋ ๊ด๋ฆฌ๊ฐ ํธํด์ง๋ค.
- ์ฝ๋ ๊ฐ๊ฒฐํ
- ์ ์ฐ์ฑ
- ๊ฐ๋ ์ฑ ํฅ์
๋ํ์ ์ธ ์ด๋ํฐ ํด๋์ค
์ธํฐํ์ด์ค | ์ด๋ํฐ ํด๋์ค |
ComponentListener | ComponentAdapter |
ContainerListener | ContainerAdapter |
FocusListener | FocusAdapter |
KeyListener | KeyAdapter |
MouseListener | MouseAdapter |
MouseMotionListener | MouseMotionAdapter |
WindowListener | WindowAdapter |
๐ ์ด๋ํฐ ํด๋์ค์ฌ์ฉ ์์ ์ฝ๋
import javax.swing.*;
import java.awt.event.*;
public class MouseAdapterExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Mouse Adapter Example");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Click Me");
//MouseListener์ด ์๋ MouseAdapter์ ์ฌ์ฉ
button.addMouseListener(new MouseAdapter() {
@Override
// ์ํ๋ ๋ฉ์๋ mouseClicked๋ง ์ค๋ฒ๋ผ์ด๋
// ์ฌ์ ์ํ์ง ์์ ๋ถํ์ํ ๋ฉ์๋๋ ๊ธฐ๋ณธ ๊ตฌํ ์ํ
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse clicked!");
}
});
frame.add(button);
frame.setVisible(true);
}
}
โป ์ด๋ํฐ ํด๋์ค์ ๊ฒฝ์ฐ ํด๋์ค ํน์ฑ์ "์์"์ ํด์ผํ๋ฏ๋ก, ๋ฉ์๋ ๊ด๋ฆฌ๊ฐ ํธํ์ง๋ง ๋ค์ค ์์์ด ์ ๋๋ค๋ ์ ์์ฌํญ์ด ์๋ค.
โป ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค๋ ์ธํฐํ์ด์ค๋ก, ๋ฉ์๋๋ฅผ ์ ๋ถ ๊ตฌํํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ง๋ง ๋ค์ค์์์ด ๊ฐ๋ฅํ๊ธฐ์ ํ์์ ์ํด ์ ํํด์ ์ฌ์ฉํด์ผ ํ๋ค.
'Framework & Library > Swing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swing] ์ฌ์ฉ์ ์ ์ ํจ๊ณผ์ ๋ฉ์๋ (5) | 2024.09.18 |
---|---|
[Swing] JOptionPane ํ์ ์ฐฝ ํด๋์ค (0) | 2024.09.17 |
[Swing] ๋ฐฐ์น ๊ด๋ฆฌ์ (0) | 2024.09.05 |
[Swing] ๊ธฐ์ด ์ปดํฌ๋ํธ์ ์์ฑ์์ ๋ฉ์๋ (1) | 2024.09.05 |
[Swing] ์๋ฐ GUI ์ค์ (Swing) (1) | 2024.09.03 |