์์ ๋ ์ง/์ ๋ฆฌ๋ ์ง
2022.05.10/2022.05.15
ํ์ต์ฃผ์
- 10 ์ด๋ฒคํธ ์ฒ๋ฆฌ
ํ์ต๋ด์ฉ
10 ์ด๋ฒคํธ ์ฒ๋ฆฌ
์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์ ์ ๋ฆฌ
1. ์ด๋ฒคํธ ์ข ๋ฅ: ActionEvent
2. ๋ฆฌ์ค๋ ์ด๋ฆ: ActionListener
3. ๋ฆฌ์ค๋ ๊ตฌํ: actionPerformed
4. ๋ฆฌ์ค๋ ๋ฑ๋ก: addActionListener
Key ์ด๋ฒคํธ
๋ฉ์๋ | ์ค๋ช |
keyPress(KeyEvent e) | ์ฌ์ฉ์๊ฐ ํค๋ฅผ ๋๋ ์ ๊ฒฝ์ฐ์ ํธ์ถ |
keyTyped(KeyEvent e) | ์ฌ์ฉ์๊ฐ ๊ธ์๋ฅผ ์ ๋ ฅํ์ ๊ฒฝ์ฐ์ ํธ์ถ |
keyReleased(KeyEvent e) | ์ฌ์ฉ์๊ฐ ํค์์ ์์ ๋ผ์์ ๊ฒฝ์ฐ์ ํธ์ถ |
โป keyTyped() → Alt, Ctrl, Shift๋ ๋ฌธ์ํค๊ฐ ์๋๋ฏ๋ก ์ ๋ ฅ ์๋จ
ํค ์ด๋ฒคํธ ์์
ํค๋ณด๋์์ ๋ฌธ์๊ฐ ์ ๋ ฅ๋๋ฉด ๋ฌธ์์ ํค ์ฝ๋, Alt๋ Ctrl, Shift ํค์ ๋๋ฆผ ์ฌ๋ถ๋ฅผ ํ ์คํธ ์์ญ์์ ์ถ๋ ฅ
public class KeyEventTest extends JFrame implements KeyListener{
private JPanel panel;
privet JTextField field;
private JTextArea area;
public keyEventTest(){
panel = new JPanel(new GridLayout(0, 2));
panel.add(new JLabel("๋ฌธ์๋ฅผ ์
๋ ฅํ์์ค: "));
field = new JTextField(10); // #2: ๋๋ฅผ ๋๋ง๋ค ์ด๋ฒคํธ๋ฐ์(ํ
์คํธํ๋์ ์ปค์ ๋๊ณ ์
๋ ฅ)
panel.add(field);
field.addKeyListener(this);
area = new JTextArea(3, 30); // ํ๋ ฌ
add(panel, BorderLayout.NORTH);
add(area, BorderLayout.CENTER);
setTitle("KeyEvent Test");
setSize(400, 200);
setVisible(true);
}
public static void main(String[] args){new KeyEventTest();}
// 3๊ฐ ๋ชจ๋ ์ค๋ฒ๋ผ์ด๋ฉ
public void keyPressed(KeyEvent e){display(e, "Key Pressed ");}
public void keyTyped(KeyEvent e){display(e, "Key Typed ");}
public void keyReleased(KeyEvent e){display(e, "Key Released ");} // display ํจ์
protected void display(KeyEvent e, String s){
char c = e.getKeyChar();
int keyCode = e.getKeyCode();
String modifiers = "Alt: " + e.isAltDown() + "Ctrl: " + e.isControlDown() + "Shift: " + e.isShiftDown();
// Alt๋๋ ธ๋์ง true, false
area.append(s + "๋ฌธ์ " + c + "(์ฝ๋: " + keyCode + ") " + modifiers + "\n");
// append: ๊ธฐ์กด ๋ด์ฉ ๋๋๊ณ ๋ค์ ๋ด์ฉ ์ถ๊ฐ
}
}
์๋์ฐจ ๊ฒ์ ์์
ํค๋ณด๋์ ํ์ดํ ํค๋ก ์์ง์ด๋ ์๋์ฐจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑ
public class CarGameTest extends JFrame{
public CarGameTest(){
setSize(300, 300)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new MyPanel());
setVisible(true);
}
public static void main(String[] args){CarGameTest s = new CarGameTest();}
}
class MyPanel extends JPanel{
BufferedImage img = null; // ๊ฐ์ฒด์ฐธ์กฐ๋ณ์(์ด๋ฏธ์ง ๋ง๋ค ์ค๋น)
int img_x = 100, img_y = 100;
public void paintComponent(Graphics g){ // JPanel ์ค๋ฒ๋ผ์ด๋ฉ(JPanel ์์์ด์ : paintComponent ์ฌ์ฉํ๋ ค๊ณ )
super.paintComponents(g); // JPanel์ painComponenet ํธ์ถ(ํฌ๋ช
(๋น) ํจ๋ ๊ทธ๋ฆผ) -> ์์ผ๋ฉด ์ด๋ฏธ์ง ์ด๋ ์, ์์ ๋จ์
g.drawImage(img, img_x, img_y, null); // ์ด๋ฏธ์ง๋ฅผ x:100, y:100์ ๊ทธ๋ ค๋ผ
}
public MyPanel(){ // MyPanel์์ฑ์
try{img = ImageIO.read(new File("car.gif"));} // ์ด๋ฏธ์ง ์
์ถ๋ ฅ
catch(IOException e){System.out.print("no image"); System.exit(1);} // ํ์ผ ๋ชป์ฐพ์ผ๋ฉด ํ๋ก๊ทธ๋จ ์ข
๋ฃ
addKeyListener(new KeyListener(){ // MyPanel์ addKeyListener.(this์๋ต)
public void keyPressed(KeyEvent e){ // ๋ฌด๋ช
ํด๋์ค
int keycode = e.getKeyCode();
switch (keycode) {
case KeyEvent.VK_UP: img_y -= 10; break;
case KeyEvent.VK_DOWN: img_y += 10; break;
case KeyEvent.VK_LEFT: img_x -= 10; break;
case KeyEvent.VK_RIGHT: img_x += 10; break;
}
repaint();} // ๋ค์ ๊ทธ๋ฆฌ๊ธฐ. paintComponent ์คํ๋จ
public void keyReleased(KeyEvent arg0){}
public void keyTyped(KeyEvent arg0){}
});
this.requestFocus(); // ํฌ์ปค์ค์์ฒญ
setFocusable(true); // ํฌ์ปค์ค ๋ฐ์ ์ ์๋ ์ํฉ์ผ๋ก true (์ก์
์ทจํ ์ปดํฌ๋ํธ์๊ฒ focus๋จ)
}
}
Mouse ์ด๋ฒคํธ
MouseListener ์ธํฐํ์ด์ค
๋ฉ์๋ | ์ค๋ช |
mouseClicked(MouseEvent e) | ์ฌ์ฉ์๊ฐ ์ปดํฌ๋ํธ๋ฅผ ํด๋ฆญํ ๊ฒฝ์ฐ์ ํธ์ถ๋๋ค. |
mouseEntered(MouseEvent e) | ๋ง์ฐ์ค ์ปค์๊ฐ ์ปดํฌ๋ํธ๋ก ๋ค์ด๊ฐ๋ฉด ํธ์ถ๋๋ค |
mouseExited(MouseEvent e) | ๋ง์ฐ์ค ์ปค์๊ฐ ์ปดํฌ๋ํธ์์ ๋๊ฐ๋ฉด ํธ์ถ๋๋ค. |
mousePressed(MouseEvent e) | ๋ง์ฐ์ค๊ฐ ์ปดํฌ๋ํธ ์์์ ๋๋ ค์ง๋ฉด ํธ์ถ๋๋ค. |
mouseReleased(MouseEvente e) | ๋ง์ฐ์ค๊ฐ ์ปดํฌ๋ํธ ์์์ ๋ผ์ด์ง๋ฉด ํธ์ถ๋๋ค. |
Mouse ์ด๋ฒคํธ ์์
- Mouse pressed
- Mouse released
- Mouse cliked
MouseMotionListener ์ธํฐํ์ด์ค
๋ฉ์๋ | ์ค๋ช |
mouseDragged(MouseEvent e) | ๋ง์ฐ์ค ๋๋๊ทธํ๋ฉด ํธ์ถ๋๋ค. |
mouseMoved(MouseEvent e) | ๋ง์ฐ์ค๊ฐ ํด๋ฆญ๋์ง ์๊ณ ์ด๋ํ๋ ๊ฒฝ์ฐ์ ํธ์ถ๋๋ค. |
MouseEvent
class MyPanel extends JPanel {
BufferedImage img = null;
int img_x = 0, img_y = 0;
public MyPanel() {
try {
img = ImageIO.read(new File("car.gif"));
} catch (IOException e) {
System.out.println("no image");
System.exit(1);
}
addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {
img_x = e.getX();
img_y = e.getY();
repaint();
}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
});
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, img_x, img_y, null);
}
}
public class MyFrame extends JFrame {
public MyFrame() {
add(new MyPanel());
setSize(300, 500);
setVisible(true);
}
public static void main(String[] arg) {
new MyFrame();
}
}
์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
๋ง์ฐ์ค ํด๋ฆญ์ผ๋ก ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
class Rectangle { // ์ฌ๊ฐํ ๊ทธ๋ฆฌ๋ ํด๋์ค
int x, y, w, h;
}
class MyPanel extends JPanel implements MouseListener {
BufferedImage img = null;
int img_x = 0, img_y = 0;
Rectangle[] array = new Rectangle[100]; // ๊ฐ์ฒด ๋ฐฐ์ด. ํด๋์ค ๋ฐฐ์ด ์ฐ๋ ์ด์ : paintComponent๊ฐ ๋งค๋ฒ ์๋ก ๊ทธ๋ฆผ->์ง์์ง์ง์๊ณ ๊ณ์ ๊ทธ๋ฆผ(๊ฐ์ฒด์ ์ง)
int index = 0;
public MyPanel() {
this.addMouseListener(this);
}
public void paintComponent(Graphics g) { // JPanel์ paintComponent -> ๋นํจ๋ ๊ทธ๋ฆผ
super.paintComponent(g);
for (Rectangle r : array) // ๋ฐฐ์ด์์น ๋ฐ๋ณต๋ฌธ(for each)
if (r != null)
g.drawRect(r.x, r.y, r.w, r.h); // drawRect: ์ฌ๊ฐํ ๊ทธ๋ฆผ, ์ค๋งค๊ฐ๋ณ์ 4๊ฐ ํ์
}
@Override
public void mousePressed(MouseEvent e) {
if (index > 100)
return;
array[index] = new Rectangle(); // ์ฌ๊ฐํ ๊ฐ์ฒด ์์ฑ
array[index].x = e.getX(); // getX: ํด๋ฆญํ x์ขํ
array[index].y = e.getY(); // getY: ํด๋ฆญํ y์ขํ
array[index].w = 50;
array[index].h = 50;
index++;
repaint();
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
public class MouseEventTest extends JFrame {
public MouseEventTest() {
setSize(300, 300);
setTitle("๋ง์ฐ์ค๋ก ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new MyPanel());
setVisible(true);
}
public static void main(String[] args) {
MouseEventTest s = new MouseEventTest();
}
}
์ด๋ํฐ ํด๋์ค
- ๋ฆฌ์ค๋์ ๋์๋๋ ์ด๋ํฐ ํด๋์ค (๋์ ๋ค์ค ์์ ๋ถ๊ฐ...)
- ์ํ๋ ๋ฉ์๋๋ง ์ค๋ฒ๋ผ์ด๋ฉ ๊ฐ๋ฅ (์ํ๋๊ฒ๋ง ์์ ๋ฐ์...)
์ธํฐํ์ด์ค | ์ด๋ํฐ ํด๋์ค |
ComponentListener | ComponentAdapter |
ContainerListener | ContainerAdapter |
FocusListener | FocusAdapter |
KeyListener | KeyAdapter |
MouseListener | MouseAdapter |
MouseMotionListener | MouseMotionAdapter |
WindowListener | WindowAdapter |
๋ฆฌ์ค๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ → ๋ชจ๋ ์ค๋ฒ๋ผ์ด๋ฉ
์ด๋ํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ → ํ์ํ ๊ฒ๋ง ์ค๋ฒ๋ผ์ด๋ฉ(๋จ, ๋ค์ค ์์ ๋ถ๊ฐ)
ํ์ต๋ด์ฉ ์ดํด๋
85% ์ ๋
ํ์ตํ๋ ๋์๋ณด๊ธฐ
์ ๋ฒ์ ๋ฐฐ์ด ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ฐ์ฅ์ ์ด๋ผ ๋งค์ฐ ์ด๋ ต์ง๋ ์์๋ค. ๋ค๋ง, ๋ฐฐ์ด ๋ด์ฉ์ ์ ์ฉํ๋ ์์ ๊ฐ ๋ค์ ๋ณต์กํด ์ด๋ ต๊ฒ ๋๊ปด์ก๋ค. ์ฝ๋ ํ๋ํ๋ ์ดํดํด ๊ฐ๋ฉฐ ๋ณต์ตํ๋, ๊ทธ๋๋ง ๊ด์ฐฎ์๋ค.
์๋์ฐจ ์ด๋ฏธ์ง ์ด๋ ์์ ๊ฐ ํนํ ๋ณต์กํ๋ค. ์ฌ๋ฌ๋ฒ ๋ฐ๋ณต ๋ณต์ต ํด์ผ๊ฒ ๋ค.
๋ค์ ํ์ต๊ณํ
์ค์ ์ปดํฌ๋ํธ์ ํ์ฉ
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐํ๋ก๊ทธ๋๋ฐ 11์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.05.22 |
---|---|
์๋ฐํ๋ก๊ทธ๋๋ฐ 9์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.05.08 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 7์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.25 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 6์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.16 |
์๋ฐํ๋ก๊ทธ๋๋ฐ 5์ฃผ์ฐจ ์ ๋ฆฌ (0) | 2022.04.09 |