์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- Python challenge
- ์๋ฐ ๊ธฐ์ด
- ๋ฌ์คํธ
- ์ค๋ผํด
- Reversing
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- Rust
- ๋ฌ์คํธ ์์
- data communication
- ๋ฐฑ์ค
- ์ด์์ฒด์
- ์ค๋ผํดDB
- ์ฐ๋ถํฌ
- Operating System
- ์๋ฐ
- ๋ฐฑ์ค ๋ฌ์คํธ
- ๋ฐ์ดํฐ ํต์
- java
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ ๊ฐ๋
- ํ์ด์ฌ
- C
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- OS
- Database
- Python
- ubuntu
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
Archives
- Today
- Total
IT’s Portfolio
[Java] Lecture - Day 12 ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ฅ Basic Java - Day 12
๐๐ป [Chapter 09] ์๋ฐ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ
์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ(Event Driven Programming)
- ์ด๋ฒคํธ ์ข
๋ฅ
- ์ฌ์ฉ์์ ์ ๋ ฅ
- ์ผ์๋ก๋ถํฐ์ ์ ๋ ฅ, ๋คํธ์ํฌ๋ก๋ถํฐ ๋ฐ์ดํฐ ์ก์์
- ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ ๋ค๋ฅธ ์ค๋ ๋๋ก๋ถํฐ์ ๋ฉ์์ง
- ์ด๋ฒคํธ์ ๋ฐ์์ ์ํด ํ๋ก๊ทธ๋จ ํ๋ฆ์ด ๊ฒฐ์ ๋๋ ๋ฐฉ์
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฃจํด(event listener) ์คํ
- ํ๋ก๊ทธ๋จ ๋ด์ ์ด๋ค ์ฝ๋๊ฐ ์ธ์ ์คํ๋ ์ง ์ด๋ฒคํธ ๋ฐ์์ ์ํด ์ ์ ์ผ๋ก ๊ฒฐ์
- ๋ฐ๋ ๊ฐ๋
: ๋ฐฐ์น ์คํ(Batch Programming)
- ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์๊ฐ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฒฐ์ ํ๋ ๋ฐฉ์
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ
- ๊ฐ ์ด๋ฒคํธ๋ง๋ค ์ฒ๋ฆฌํ๋ ๋ฆฌ์ค๋ ์ฝ๋๋ฅผ ๋ณด์
- ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ค์ ์งํฉ
- GUI ์์ฉ ํ๋ก๊ทธ๋จ์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์์ฑ๋จ
- GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข
๋ฅ
- Cpp MFC, C# GUI, Visual Basic, X Window, Android ๋ฑ
- Java AWT&Swing
- GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข
๋ฅ
- ์ด๋ฒคํธ๊ฐ ์ฒ๋ฆฌ๋๋ ๊ณผ์
- ์ด๋ฒคํธ ๋ฐ์
- ์ด๋ฒคํธ ๊ฐ์ฒด ์์ฑ
- ํ์ฌ ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ๊ฐ์ฒด
- ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ฐพ๊ธฐ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์คํ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ์ด๋ฒคํธ ๊ฐ์ฒด ์ ๋ฌ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ฝ๋ ์คํ
์ด๋ฒคํธ ๊ด๋ จ ์ฉ์ด
- ์ด๋ฒคํธ ์์ค(event source)
- ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ GUI ์ปดํฌ๋ํธ
- ์ด๋ฒคํธ ๊ฐ์ฒด
- ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง ๊ฐ์ฒด
- ์ด๋ฒคํธ ๋ฆฌ์ค๋
- ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋, ํด๋์ค๋ก ์์ฑ
- ์ปดํฌ๋ํธ์ ๋ฑ๋ก๋์ด์ผ ์๋ ๊ฐ๋ฅ
- ์ด๋ฒคํธ ๋ถ๋ฐฐ ์ค๋ ๋
- ๋์
- ์๋ฐ ๊ฐ์ ๋จธ์ ์ผ๋ก๋ถํฐ ์ด๋ฒคํธ์ ๋ฐ์์ ํต์ง๋ฐ์
- ์ด๋ฒคํธ ์์ค์ ์ด๋ฒคํธ ์ข ๋ฅ ๊ฒฐ์
- ์ ์ ํ ์ด๋ฒคํธ ๊ฐ์ฒด ์์ฑ, ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฐพ์ ํธ์ถ
- ๋ฌดํ ๋ฃจํ๋ฅผ ์คํํ๋ ์ค๋ ๋
- ๋์
์ด๋ฒคํธ ๊ฐ์ฒด
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋, ๋ฐ์ํ ์ด๋ฒคํธ์ ๊ดํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด
- ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ์ ๋ฌ๋จ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ฝ๋์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ํฉ์ ํ์ ํ ์ ์๊ฒ ํจ
- ๋ชจ๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ java.util.EventObject ํด๋์ค๋ฅผ ์์๋ฐ์
- ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ํฌํจํ๋ ์ ๋ณด
- ์ด๋ฒคํธ ์ข ๋ฅ
- ์ด๋ฒคํธ ์์ค
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ๋ฉด ์ขํ
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ปดํฌ๋ํธ ๋ด ์ขํ
- ๋ฒํผ์ด๋ ๋ฉ๋ด ์์ดํ ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฒํผ์ด๋ ๋ฉ๋ด ์์ดํ ์ ๋ฌธ์์ด
- ํด๋ฆญ๋ ๋ง์ฐ์ค ๋ฒํผ ๋ฒํธ
- ๋ง์ฐ์ค์ ํด๋ฆญ ํ์
- ํค๊ฐ ๋๋ฌ์ก๋ค๋ฉด ํค์ ์ฝ๋ ๊ฐ๊ณผ ๋ฌธ์ ๊ฐ
- ์ฒดํฌ๋ฐ์ค์ ๋ผ๋์ค๋ฒํผ ๋ฑ๊ณผ ๊ฐ์ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์๋ค๋ฉด ์ฒดํฌ ์ํ
- ์ด๋ฒคํธ์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ๋ค๋ฅธ ์ ๋ณด ํฌํจ
- ActionEvent ๊ฐ์ฒด : ์ก์ ๋ฌธ์์ด
- MouseEvent ๊ฐ์ฒด : ๋ง์ฐ์ค ์์น ์ ๋ณด, ๋ง์ฐ์ค ๋ฒํผ, ํจ๊ป ๋๋ฌ์ง ํค ์ ๋ณด ๋ฑ
- ItemEvent ๊ฐ์ฒด : ์์ดํ ์ ์ฒดํฌ ์ํ
- ์ด๋ฒคํธ ์์ค ์์๋ด๊ธฐ
Object getSource()
- EventObject ํด๋์ค์ ๋ฉ์๋
- ๋ฐ์ํ ์ด๋ฒคํธ์ ์์ค ์ปดํฌ๋ํธ ๋ฆฌํด
- Object ํ์
์ผ๋ก ๋ฆฌํดํ๋ฏ๋ก ๋ค์ด์บ์คํ
ํ์ฌ ์ฌ์ฉ
Object obj = event.getSource();
Jbutton b = (Jbutton)event.getSource();
- ๋ชจ๋ ์ด๋ฒคํธ ๊ฐ์ฒด์ ๋ํด ์ ์ฉ
-
- ์ด๋ฒคํธ ๊ฐ์ฒด์ ์ด๋ฒคํธ ์์ค
์ด๋ฒคํธ ๋ฆฌ์ค๋
- ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋, ํด๋์ค๋ก ์์ฑ
- ์ฌ์ฉ์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์ฑ
- ์๋ฐ์ ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ๊ตฌํ
- ๋ฆฌ์ค๋ ์ธํฐํ์ด์ค์ ๋ชจ๋ ์ถ์ ๋ฉ์๋ ๊ตฌํ
- JDK์์๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์ฑ์ ์ํ ๋ค์ํ ์ธํฐํ์ด์ค ์ ๊ณต
- java.awt.event.*
interface ActionListener { // ์๋ ๋ฉ์๋๋ฅผ ๊ฐ๋ฐ์๊ฐ ๊ตฌํํด์ผ ํจ
public void actionPerformed(ActionEvent e); // Action ์ด๋ฒคํธ ๋ฐ์ ์ ํธ์ถ๋จ
}
- ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ActionListener ์ธํฐํ์ด์ค
interface MouseListener { // ์๋์ 5๊ฐ ๋ฉ์๋๋ฅผ ๊ฐ๋ฐ์๊ฐ ๊ตฌํํด์ผ ํจ
public void mousePressed(MouseEvent e); // ๋ง์ฐ์ค ๋ฒํผ์ด ๋๋ฌ์ง๋ ์๊ฐ ํธ์ถ
public void mouseReleased(MouseEvent e); // ๋๋ฌ์ง ๋ง์ฐ์ค ๋ฒํผ์ด ๋ผ์ด์ง๋ ์๊ฐ ํธ์ถ
public void mouseClicked(MouseEvent e); // ๋ง์ฐ์ค๊ฐ ํด๋ฆญ๋๋ ์๊ฐ ํธ์ถ
public void mouseEntered(MouseEvent e); // ๋ง์ฐ์ค๊ฐ ์ปดํฌ๋ํธ ์์ ์ฌ๋ผ๊ฐ๋ ์๊ฐ ํธ์ถ
public void mouseExited(MouseEvent e); // ๋ง์ฐ์ค๊ฐ ์ปดํฌ๋ํธ ์์์ ๋ด๋ ค์ค๋ ์๊ฐ ํธ์ถ
}
- ๋ง์ฐ์ค ์กฐ์์ ๋ฐ๋ฅธ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ MouseListener ์ธํฐํ์ด์ค
์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์ฑ ๊ณผ์
- ์ด๋ฒคํธ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ํ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ํด๋์ค ์์ฑ : ActionListener ์ธํฐํ์ด์ค ๊ตฌํ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก
- ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก
component.addXXXListener( listener )
- XXX : ์ด๋ฒคํธ ๋ช
- listener : ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๊ฐ์ฒด
- ์ปดํฌ๋ํธ๋ ์๋ก ๋ค๋ฅธ ์ด๋ฒคํธ์ ๋ํ ๋ฆฌ์ค๋๋ค์ ๋์์ ๊ฐ์ง ์ ์์
- ์ปดํฌ๋ํธ๋ ํ ์ด๋ฒคํธ์ ๋ํด ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ ๋ฆฌ์ค๋๋ฅผ ๋์์ ๊ฐ์ง ์ ์์
- ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์์ฑ ๋ฐฉ๋ฒ
- ๋
๋ฆฝ ํด๋์ค๋ก ์์ฑ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์์ ํ ํด๋์ค๋ก ์์ฑ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ ๋ ์ ํฉ
- ๋ด๋ถ ํด๋์ค(inner class)๋ก ์์ฑ
- ํด๋์ค ์์ ๋ฉค๋ฒ์ฒ๋ผ ํด๋์ค ์์ฑ
- ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํน์ ํด๋์ค์์๋ง ์ฌ์ฉํ ๋ ์ ํฉ
- ์ต๋ช
ํด๋์ค(anonymous class)๋ก ์์ฑ
- ํด๋์ค์ ์ด๋ฆ ์์ด ๊ฐ๋จํ ๋ฆฌ์ค๋ ์์ฑ
- ํด๋์ค์กฐ์ฐจ ๋ง๋ค ํ์ ์์ด ๋ฆฌ์ค๋ ์ฝ๋๊ฐ ๊ฐ๋จํ ๊ฒฝ์ฐ์ ์ ํฉ
- ๋
๋ฆฝ ํด๋์ค๋ก ์์ฑ
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class IndepClassListenerEx extends JFrame {
public IndepClassListenerEx() {
setTitle("Action Listener Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
JButton b1 = new JButton("Action");
b1.addActionListener(new MyActionListener());
c.add(b1);
setSize(400, 200);
setVisible(true);
}
public static void main(String[] args) {
new IndepClassListenerEx();
}
}
class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton b1 = (JButton)e.getSource();
if(b1.getText().equals("Action"))
b1.setText("์ก์
");
else
b1.setText("Action");
}
}
- ๋ ๋ฆฝ ํด๋์ค๋ก Action ์ด๋ฒคํธ์ ๋ฆฌ์ค๋ ์์ฑ
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class InnerClassListenerEx extends JFrame {
public InnerClassListenerEx() {
setTitle("Action Listener Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
JButton b1 = new JButton("Action");
b1.addActionListener(new MyActionListener());
c.add(b1);
setSize(400, 200);
setVisible(true);
}
private class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JButton b1 = (JButton)e.getSource();
if (b1.getText().equals("Action"))
b1.setText("์ก์
");
else
b1.setText("Action");
setTitle(b1.getText());
}
}
public static void main(String[] args) {
new InnerClassListenerEx();
}
}
- ๋ด๋ถ ํด๋์ค๋ก Action ์ด๋ฒคํธ์ ๋ฆฌ์ค๋ ์์ฑ
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class AnonymousClassListenerEx extends JFrame {
public AnonymousClassListenerEx() {
setTitle("Action Listener Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
JButton b1 = new JButton("Action");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton b1 = (JButton)e.getSource();
if(b1.getText().equals("Action"))
b1.setText("์ก์
");
else
b1.setText("Action");
setTitle(b1.getText());
}
});
c.add(b1);
setSize(400, 200);
setVisible(true);
}
public static void main(String[] args) {
new AnonymousClassListenerEx();
}
}
- ์ต๋ช ํด๋์ค๋ก Action ์ด๋ฒคํธ์ ๋ฆฌ์ค๋ ์์ฑ
728x90
๋ฐ์ํ
'Development Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Lecture - Day 14 (0) | 2024.04.05 |
---|---|
[Java] Lecture - Day 13 (1) | 2024.03.30 |
[Java] Lecture - Day 11 (0) | 2024.03.15 |
[Java] Lecture - Day 10 (0) | 2023.12.12 |
[Java] Lecture - Day 9 (1) | 2023.12.12 |
Comments