GUI

GUI ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ‚ค๋ณด๋“œ๋ฟ ์•„๋‹ˆ๋ผ ๋งˆ์šฐ์Šค ์‚ฌ์šฉ ์ง€์›, ํ™”๋ คํ•˜๊ณ  ๋‹ค์–‘ํ•œ ํ™”๋ฉด๊ณผ ๋”๋ถˆ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ํ™”๋ฉด ์ž‘๋™ ๊ฐ€๋Šฅํ•˜๋‹ค.

Java GUI ์ข…๋ฅ˜

  • AWT(Abstract Windows Toolkit) : ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž์›์„ ์ด์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜์ฒด์ œ ๋ณ„๋กœ ๋А๋‚Œ์ด ๋‹ค๋ฅด๋‹ค.

    • java.awt.*

    • Button, Frame, TextField

  • Swing : ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํ”Œ๋žซํผ์—์„œ๋„ ์ผ๊ด€๋œ ํ™”๋ฉด์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    • javax.swing.*

    • ํ˜•์‹ํ™”๋œ ํ…์ŠคํŠธ ์ž…๋ ฅ์ด๋‚˜ ํŒจ์Šค์›Œ๋“œ ํ•„๋“œ ๋™์ž‘๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋œ๋‹ค.

  • Java 2D API : ๊ทธ๋ฆผ, ์ด๋ฏธ์ง€, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

  • ๋ฐ์ดํ„ฐ ์ „์†ก : ์ž๋ฅด๊ธฐ, ๋ณต์‚ฌ, ๋ถ™์ด๊ธฐ , Drag and Drop ๋“ฑ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ธฐ๋Šฅ ์ œ๊ณต + undo, redo

Container

์ž๋ฐ”์—์„œ Container๋Š” ์ฐฝ์˜ ์—ญํ• ์„ ํ•œ๋‹ค.

  • ํ•œ ๊ฐœ ์ด์ƒ์˜ Container ์œ„์— Component๋“ค์ด ์˜ฌ๋ ค์งˆ ์˜์—ญ

  • Container๋Š” ์‹ค์ œ๋กœ๋Š” Component๋ณด๋‹ค ์ž‘์€ ๊ฐœ๋…

  • (์˜ˆ) Frame, Window, Panel, Dialog, Applet

  • (์˜ˆ) JFrame, JDialog, JApplet, JPanel, JScrollPane

Frame ์ƒ์„ฑ ํ•˜๊ธฐ

๋ฐฉ๋ฒ•1 : JFrame ๊ฐ์ฒด ์ƒ์„ฑ

import javax.swing.*;

public class FrameTest1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JFrame f = new JFrame("Frame Test");
        f.setSize(300,200); //ํฌ๊ธฐ ์ง€์ •
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //swing์—๋งŒ ์กด์žฌํ•œ๋‹ค. x๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์ข…๋ฃŒ
        f.setVisible(true); // Container๋ณด์ด๊ธฐ
    }
}

๋ฐฉ๋ฒ•2 : JFrame ์ƒ์†

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {
        setSize(300,200);
        //swing์—๋งŒ ์กด์žฌํ•œ๋‹ค. x๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์ข…๋ฃŒ
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

public class FrameTest1{
    public static void main(String[] args) {
        FrameTest f = new FrameTest();
    }
}

๋ฉ”์†Œ๋“œ or ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์†Œ๋“œ

์„ค๋ช…

void add(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ”„๋ ˆ์ž„์— ์ถ”๊ฐ€

JMenuBar getJMenuBar()

์ด ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๋ฉ”๋‰ด๋ฅผ ์–ป๋Š”๋‹ค.

void pack()

ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ๋ฅผ ์ถ”๊ฐ€๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํฌ๊ธฐ์— ๋งž๋„๋ก ์กฐ์ ˆํ•œ๋‹ค.

void remove(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ”„๋ ˆ์ž„์—์„œ ์ œ๊ฑฐ

void setDefaultCloseOperation()

์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ ˆ์ž„์„ ๋‹ซ์„ ๋•Œ ์ˆ˜ํ–‰๋œ๋Š” ๋™์ž‘์„ ์„ค์ •ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ JFrame.EXIT_ON_CLOSE ๋กœ ์ง€์ •

void setIconImage(Icon Image)

ํ”„๋ ˆ์ž„์ด ์ตœ์†Œํ™”๋˜์—ˆ์„ ๋•Œ์˜ ์•„์ด์ฝ˜ ์ง€์ •

void setLayout(LayoutManager layout)

ํ”„๋ ˆ์ž„์— ๋†“์ด๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฐ์น˜ ๊ด€๋ฆฌ์ž ์ง€์ •, ๋””ํดํŠธ๋Š” BorderLayout์ด๋‹ค.

void setLocation(int x, int y)

ํ”„๋ ˆ์ž„์˜ (x,y)์ขŒํ‘œ ์ง€์ •

void setResizeable(boolean value)

ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ ๋ณ€๊ฒฝ ํ—ˆ์šฉ ์—ฌ๋ถ€

void setSize(int width, int height)

ํ”„๋ ˆ์ž„์˜ ํฌ๊ธฐ ์„ค์ •

void setMenuBar(JMenuBar menu)

ํ˜„์žฌ ํ”„๋ ˆ์ž„์— ๋ฉ”๋‰ด๋ฐ”๋ฅผ ๋ถ™์ธ๋‹ค.

Panel

Component๋“ค์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.(์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ํŒ)

๋ฉ”์†Œ๋“œ & ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž or ๋ฉ”์†Œ๋“œ

์„ค๋ช…

JPanel()

์ƒˆ๋กœ์šด Panel ์ƒ์„ฑ

JPanel(boolean isDoubleBuffered)

๋งŒ์•ฝ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์ด๋ฉด ๋”๋ธ” ๋ฒ„ํผ๋ง ์‚ฌ์šฉ

JPanel(LayoutManager layout)

์ง€์ •๋œ ๋ฐฐ์น˜ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Panel ์ƒ์„ฑ

void add(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ Panel์— ์ถ”๊ฐ€

void remove(Component c)

์ง€์ •๋œ ์ปดํฌ๋„ŒํŠธ Panel์— ์ œ๊ฑฐ

void setLaytout(LayoutManager layout)

๋ฐฐ์น˜ ๊ด€๋ฆฌ์ž๋ฅผ ์ง€์ •ํ•œ๋‹ค. ๋””ํดํŠธ๋Š” FlowLayout์ด๋‹ค.

void setSize(int width, int height)

Panel์˜ ํฌ๊ธฐ ์ง€์ •

void setLocation(int x, int y)

Panel์˜ ์œ„์น˜ ์ง€์ •

void setToolTipText(String text)

์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ Panel์˜ ๋นˆ๊ณณ์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ํŒ์„ ํ‘œ์‹œ

Component

์‹ค์ œ๋กœ Container ์œ„์— ์˜ฌ๋ ค์ ธ์„œ ํ™”๋ฉด ๊ตฌ์„ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ์š”์†Œ๋“ค์ด๋‹ค.

  • (์˜ˆ) Button, TextField, TextArea, List

  • (์˜ˆ) JButton, JTextField, JChoice, JList, JMenu, JCheckbox, JScrollBar,JTextArea, JCanvas

Component ์ƒ์„ฑํ•˜๊ธฐ

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {
        //๋ฒ„ํŠผ ์ƒ์„ฑ, ์ถ”๊ฐ€
        JButton button  = new JButton("๋ฒ„ํŠผ");
        // Container์œ„์— Component์ถ”๊ฐ€
        this.add(button);
        //
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

๋ชจ์–‘์„ ์„ค์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ

๋ฉ”์†Œ๋“œ

์„ค๋ช…

void setBorder(Border) Border getBorder()

์ปดํฌ๋„ŒํŠธ์˜ ํ…Œ๋‘๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setBackground(Color) Color getBackground()

์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฐ๊ฒฝ์ƒ‰๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setForeground(Color) Color getForeground()

์ปดํฌ๋„ŒํŠธ์˜ ์ „๊ฒฝ์ƒ‰๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setOpaque(boolean) Boolean IsOpaque()

์ปดํฌ๋„ŒํŠธ์˜ ๋ถˆํˆฌ๋ช…์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๋ถˆํˆฌ๋ช…์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.

void setFont(Font) Font getFont()

์ปดํฌ๋„ŒํŠธ์˜ ๊ธ€๊ผด์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

void setCursor(Cursor) Cursor getCursor()

์ปดํฌ๋„ŒํŠธ์— ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๊ฐ€์ ธ๊ฐ”์„ ๋•Œ ๋ณด์ด๋Š” ์ปค์„œ ๋ชจ์–‘์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜จ๋‹ค.

Label

ํŽธ์ง‘์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ

์„ค๋ช…

String getText()

Label์˜ ํ…์ŠคํŠธ ๋ฐ˜ํ™˜

void setText()

Label์˜ ํ…์ŠคํŠธ ์„ค์ •

void setToolTipText(String text)

์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ Label์˜ ์œ„์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ํŒ์„ ํ‘œ์‹œ

void setVisible(boolean value)

Label์„ ๋ณด์ด๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ถ˜๋‹ค.

Button

์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ–ˆ์„ ๊ฒฝ์šฐ, ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜์—ฌ ์›ํ•˜๋Š” ๋™์ž‘์„ ํ•˜๊ฒŒ ํ•˜๋Š”๋ฐ ์ด์šฉ๋œ๋‹ค.

๋ฉ”์†Œ๋“œ

์„ค๋ช…

String getText()

๋ฒ„ํŠผ์˜ ํ˜„์žฌ ํ…์ŠคํŠธ ๋ฐ˜ํ™˜

void setText(String text)

๋ฒ„ํŠผ์˜ ํ…์ŠคํŠธ ์„ค์ •

void doClick()

์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๊ฒƒ ์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ ๋ฐœ์ƒ

void setBorderPanited(boolean value)

๋ฒ„ํŠผ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ๊ฐ์ถ˜๋‹ค.

void setContentAreaFilled(boolean value)

๋ฒ„ํŠผ์˜ ๋ฐฐ๊ฒฝ์„ ์ฑ„์šธ ๊ฒƒ์ธ์ง€ ์ง€์ •

void setEnable(boolean value)

๋ฒ„ํŠผ์„ ํ™œ์„ฑํ™” ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”

void setRolloverEnabled(boolean value)

๋งˆ์šฐ์Šค๊ฐ€ ๋ฒ„ํŠผ ์œ„์— ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ„๋ฅผ ์ง„ํ•˜๊ฒŒ ํ•˜๋Š” rollover ํšจ๊ณผ ์„ค์ •

void setToolTipText(String text)

์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ๋ฒ„ํŠผ์œ„์— ์˜ฌ๋ ค๋†“์œผ๋ฉด ํŒ์„ ํ‘œ์‹œ

void setVisible(boolean value)

๋ฒ„ํŠผ์„ ๋ณด์ด๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ถ˜๋‹ค.

Text Field

์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•œ ํ•œ์ค„์˜ ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

์ƒ์„ฑ์ž or ๋ฉ”์†Œ๋“œ

์„ค๋ช…

JTextField()

TextField ์ƒ์„ฑ

JTextField(int columns)

์ง€์ •๋œ ์นธ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” TextField ์ƒ์„ฑ

JTextField(String text)

์ง€์ •๋œ ๋ฌธ์ž์—ด๋กœ ์ดˆ๊ธฐํ™”๋œ TextField ์ƒ์„ฑ

String getText()

TextField์— ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜

void setText(String text)

TextField์— ํ…์ŠคํŠธ ์“ฐ๊ธฐ

void setEditable(boolean) boolean isEditable()

์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์„ค์ •ํ•˜๊ณ  ๋ฐ˜ํ™˜

์—ฌ๋Ÿฌ๊ฐ€์ง€ Component ์ƒ์„ฑํ•˜๊ธฐ

class FrameTest extends JFrame{

    public FrameTest() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Component");
        this.setLayout(new FlowLayout());

        //ํ•œ์ค„์„ ์ž…๋ ฅํ•˜๊ธฐ์œ„ํ•œ ํ…์ŠคํŠธ ํ•„๋“œ + 10์€ ์ดˆ๊ธฐ์—ด ํฌ
        JTextField txt1 = new JTextField(10);
        this.add(txt1);

        // ์—ฌ๋Ÿฌ์ค„ ์ž…๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ…์ŠคํŠธ ์˜์—ญ(ํ–‰, ์—ด)
        JTextArea txt2 = new JTextArea(5,10);
        this.add(txt2);
        //textarea ์˜์—ญ์— ์Šคํฌ๋กค๋ฐ” ์ถ”๊ฐ€ 
        this.add(new JScrollPane(txt2));

        //๋น„๋ฐ€๋ฒˆํ˜ธ ํ•„๋“œ 
        JPasswordField txt3 = new JPasswordField(10);
        this.add(txt3);

        setSize(200,200);
        setVisible(true);
    }

}
class FrameTest extends JFrame{

    public FrameTest() {
        ImageIcon img1 = new ImageIcon("~/Downloads/aa.jpg");
        ImageIcon img2 = new ImageIcon("~/Downloads/aa.jpg");

        //๋ฒ„ํŠผ์— ์ด๋ฏธ์ง€์™€ ๋ฌธ์ž๊ฐ€ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚˜๋„๋ก ์„ค์ • 
        JButton btn1 = new JButton("๋ฒ„ํŠผ1",img1);

        //Label์„ ์ด๋ฏธ์ง€ ๋˜๋Š” ๋ฌธ์ž๋กœ ์ƒ์„ฑ 
        JLabel lbl1 = new JLabel("Label ์ž…๋‹ˆ๋‹ค.");
        JLabel lbl2 = new JLabel(img2);

        //์ฒดํฌ๋ฐ•์Šค 3๊ฐœ ์ƒ์„ฑ + true๊ฐ€ ๋œ๊ณณ์€ ์ฒดํฌ๊ฐ€ ๋˜๋„๋ก ์„ค์ • 
        JCheckBox chk1 = new JCheckBox("C++");
        JCheckBox chk2 = new JCheckBox("Ruby");
        JCheckBox chk3 = new JCheckBox("Java",true);

        //๋‹จ์ผ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค
        JCheckboxGroup group = new JCheckboxGroup();
        JCheckbox man = new JCheckbox("๋‚จ์ž" , true, group);
        JCheckbox woman = new JCheckbox("์—ฌ์ž" , false, group);

        JRadioButton rdo1 = new JRadioButton("๊ณ ๋ž˜ ");
        JRadioButton rdo2 = new JRadioButton("์ƒ์–ด  ");
        JRadioButton rdo3 = new JRadioButton("์ƒˆ์šฐ  ");

    }

}

LayoutManager

Container ์œ„์— Component๋“ค์„ ์˜ฌ๋ฆด ๋•Œ ์ž๋ฆฌ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•

  • (์˜ˆ) FlowLayout, BorderLayout , GridLayout , CardLayout , GridBackLayout ...

Layout ์„ค์ • ํ˜•์‹

Container.setLayout(new ๋ ˆ์ด์•„์›ƒ์ข…๋ฅ˜());

Flow Laytout

๊ธฐ๋ณธ์ ์œผ๋กœ component๋“ค์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

Container์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜๋ฉด component์˜ ํฌ๊ธฐ๋Š” ๊ทธ๋Œ€๋กœ ์ด๋ฉฐ, ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค. ๊ฐ€์šด๋ฐ ์ •๋ ฌ์ด ๊ธฐ๋ณธ์ด๋‹ค.

  • Panel, Applet

import java.awt.FlowLayout;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {
        JButton button  = new JButton("๋ฒ„ํŠผ");
        this.add(button);
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        // FlowLayout์„ค์ •
        setLayout(new FlowLayout());
        setVisible(true);
    }

}

Border Laytout

border Layoutรฌย—ย รซยŒย€รญย•ยœ รฌยยดรซยฏยธรฌยงย€ รชยฒย€รฌยƒย‰รชยฒยฐรชยณยผ

๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ํ‹€ ํ˜•ํƒœ๋กœ ์กด์žฌํ•œ๋‹ค.

Border Layout์— component๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” this.add(์ปดํฌ๋„ŒํŠธ, ์œ„์น˜); ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผํ•œ๋‹ค. ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด Default๊ฐ’์€ Center์ด๋‹ค.

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {

        JButton button  = new JButton("๋ฒ„ํŠผ");
        this.add(button,BorderLayout.NORTH);
        setSize(300,200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

Grid Layout

ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ ๋ ˆ์ด์•„์›ƒ์ด๋‹ค. ์ธ์ˆ˜๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด ํ–‰์€ 1ํ–‰์œผ๋กœ ๊ณ ์ •๋˜๊ณ  ์—ด์ด ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€๋œ๋‹ค.

ํ–‰/์—ด ์ธ์ˆ˜์— 0์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

  • ex) (2,0)์ด๋ฉด ํ–‰์€ 2ํ–‰์œผ๋กœ ๊ณ ์ •, ์—ด์€ ๋ฌดํ•œ๋Œ€

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {

        JButton[] b  = new JButton[6];
        setLayout(new GridLayout(3,2));
        for(int i=0;i<b.length;i++) {
            b[i] = new JButton("button"+i);
            this.add(b[i]);
        }

        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

Card Layout

card Layoutรฌย—ย รซยŒย€รญย•ยœ รฌยยดรซยฏยธรฌยงย€ รชยฒย€รฌยƒย‰รชยฒยฐรชยณยผ

๊ตฌ์ฒด์ ์ธ ์œ„์น˜ ์ •ํ•˜๊ธฐ

setLayout์—๋Š” null๋กœ ์ง€์ •ํ•œ ํ›„ setBounds๋กœ ์ง์ ‘์ ์ธ ์ขŒํ‘œ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

setLayout(null);
setBounds(0,0,0,0);

๋ณตํ•ฉ์ ์ธ ๋ ˆ์ด์•„์›ƒ ์„ค์ •ํ•˜๊ธฐ

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;

import javax.swing.*;

class FrameTest extends JFrame{

    public FrameTest() {

        JPanel pane = new JPanel();
        JButton[] b  = new JButton[4];
        for(int i=0;i<b.length;i++) {
            b[i] = new JButton("button"+i);
        }
        pane.add(b[0]);
        pane.add(b[1]);
        this.add(pane,"North");
        this.add(b[2],"West");
        this.add(b[3],"Center");

        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Practice Frame");
        setVisible(true);
    }

}

public class FrameTest1{
    public static void main(String[] args) {
        FrameTest f = new FrameTest();
    }
}

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

  • ์ด๋ฒคํŠธ(event) : ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ๋กœ ๋ˆ„๋ฅด๋Š” ์ผ๋ จ์˜ ๋ชจ๋“  ์ž‘๋™

  • ๋ฆฌ์Šค๋„ˆ(Listener) : ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค -> ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ๋ฐœ์ƒ -> ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ(์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๊ฐ์ฒด)

์ฆ‰, ๋ฒ„ํŠผ์— ๋ฐ˜์‘ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

์•ก์…˜ ์ด๋ฒคํŠธ actionPerformed()

  • ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” Component(๋ฒ„ํŠผ)๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค.

  • ์ด๋ฒคํŠธ ๋ฐœ์ƒ ๊ฐ์ง€ ๋ฐฉ๋ฒ• : Listener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.

    • ํด๋ž˜์Šค์—์„œ implements ์‹œ์ผœ method๋ฅผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

    MyClass implements ActionListener{
        public void actionPerformed(ActionEvent e){
            //๊ผญ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋ฉ”์†Œ๋“œ
            //Action ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ„๋‹ค.
        }
    }
    • new๋กœ ์ƒ์„ฑํ•˜์—ฌ Component๋งˆ๋‹ค ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•

    button1.addActionListener(new ActionListener(){๋ฉ”์†Œ๋“œ ๊ตฌํ˜„..});

Event Listener ์œ„์น˜

  • ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ Event Listener๋ฅผ ์ž‘์„ฑ

    • ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ๋‘์–ด ์ด๋ฒคํŠธ ๋™์ž‘๋งŒ์„ ์œ„ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๋ณ„๋„์˜ ํด๋ž˜์Šค์ด๊ธฐ๋•Œ๋ฌธ์— ํด๋ž˜์Šค๊ฐ„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

MyClass implements ActionListener{
    public void actionPerformed(ActionEvent e){
        //๊ผญ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋ฉ”์†Œ๋“œ
        //Action ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ„๋‹ค.
    }
}
public class MyFrame extends JFrame{
    ...
    public MyFrame(){
        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(new MyListener());
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }
}
  • ๋‚ด๋ถ€ ํด๋ž˜์Šค๋กœ Event Listener๋ฅผ ์ž‘์„ฑ

    • ์œ„์™€ ๊ฐ™์ด ๋ณ„๋„๋กœ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด MyFrame์•ˆ์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame{
    private JButton btn;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("๋‚ด๋ถ€ ํด๋ž˜์Šค ์ด์šฉํ•˜๊ธฐ");

        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(new MyListener());
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }
    private class MyListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btn) {
                btn.setText("ํด๋ฆญ๋จ");
            }
        }
    }

}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}
  • ํ”„๋ ˆ์ž„ ํด๋ž˜์Šค๊ฐ€ Event Listener๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์ž‘์„ฑ

    • public class Simple extends JFrame implements ActionListener{โ€ฆ} ์˜ ํ˜•ํƒœ๋กœ actionPerformed๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๊ณตํ†ต๋œ ๋™์ž‘์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ํ• ๋Œ€๋Š”, ๊ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ Event Listener๋ฃฐ ๊ตฌํ˜„ํ•˜๋„๋กํ•œ๋‹ค.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame implements ActionListener{
    private JButton btn;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(this);
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==btn) {
            btn.setText("ํด๋ฆญ๋จ");
        }
        //๋ฒ„ํŠผ์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด if then else๊ฐ€ ๊ธธ์–ด์ง€๋Š” ํ˜•ํƒœ์ด๋‹ค.
    }
}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}
  • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋“ค์ด Event Listener๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์ž‘์„ฑ

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame implements ActionListener{
    private JButton btn;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        btn= new JButton("๋ฒ„ํŠผ");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==btn) {
                    btn.setText("ํด๋ฆญ๋จ");
                }
            }
        });
        panel.add(btn);
        this.add(panel);
        this.setVisible(true);
    }
}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}

์ด๋ฒคํŠธ์˜ ๋ถ„๋ฅ˜

๋ชจ๋“  Component๊ฐ€ ์ง€์›ํ•˜๋Š” ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์ข…๋ฅ˜

์„ค๋ช…

Component

์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Focus

ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Container

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์— ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ ๋ฐœ์ƒ

Key

์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ํ‚ค๋ณด๋“œ Focus๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์—์„œ ๋ฐœ์ƒ

Mouse

๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜๊ฑฐ๋‚˜ ๋งˆ์šฐ์Šค๊ฐ€ ๊ฐ์ฒด์˜ ์˜์—ญ์œผ๋กœ ๋“ค์–ด์˜ค๊ฐ€๋‚˜ ๋‚˜์˜ฌ๋•Œ ๋ฐœ์ƒ

MouseMotion

๋งˆ์šฐ์Šค๊ฐ€ ์›€์ง์˜€์„ ๋•Œ ๋ฐœ์ƒ

MouseWheel

์ปดํฌ๋„ŒํŠธ ์œ„์—์„œ ๋งˆ์šฐ์Šค ํœ ์„ ์›€์ง์ด๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

Window

์œˆ๋„์šฐ์— ์–ด๋–ค ๋ณ€ํ™”(์—ด๋ฆผ, ๋‹ซํž˜, ์•„์ด์ฝ˜ํ™” ๋“ฑ)๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒ

์ผ๋ถ€ Component๊ฐ€ ์ง€์›ํ•˜๋Š” ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์ข…๋ฅ˜

์„ค๋ช…

Action

์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

Caret

ํ…์ŠคํŠธ ์‚ฝ์ž…์ ์ด ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํ…์ŠคํŠธ ์„ ํƒ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Change

์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Document

๋ฌธ์„œ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ

Item

์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒ

ListSelection

๋ฆฌ์ŠคํŠธ๋‚˜ ํ…Œ์ด๋ธ”์—์„œ ์„ ํƒ ๋ถ€๋ถ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๋ฐœ์ƒ

Action Event

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ ํด๋ฆญํ•˜๋Š” ๊ฒฝ์šฐ

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ ํ•„๋“œ์—์„œ ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๋Š” ๊ฒฝ์šฐ

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyFrame extends JFrame{
    private JButton btnYellow,btnPink;
    private JPanel panel;

    public MyFrame() {
        this.setSize(300,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel = new JPanel();
        btnYellow= new JButton("Yellow");
        btnYellow.addActionListener(new MyListener());
        panel.add(btnYellow);
        btnPink= new JButton("Pink");
        btnPink.addActionListener(new MyListener());
        panel.add(btnPink);


        this.add(panel);
        this.setVisible(true);

    }
    private class MyListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btnYellow) {
                panel.setBackground(Color.YELLOW);;
            }else if(e.getSource()==btnPink) {
                panel.setBackground(Color.PINK);;
            }
        }
    }
}

public class TestCS {
    public static void main(String[] args) {
        MyFrame f = new MyFrame();

    }
}
  • getSource() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.

  • getId() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ์˜ ํƒ€์ž…์„ ์‹๋ณ„ํ•œ๋‹ค.

  • getActionCommand() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์„ ์‹๋ณ„ํ•œ๋‹ค.

Key Event

keyListener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๋ฉ”์†Œ๋“œ

์„ค ๋ช…

keyTyped(KeyEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ

keyPressed(KeyEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ

keyReleased(KeyEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค์—์„œ ์†์„ ๋–ผ์—ˆ์„ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class KeyEventPractice extends JFrame implements KeyListener{

    public KeyEventPractice() {

        this.setSize(300,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTextField tf = new JTextField(20);
        tf.addKeyListener(this);
        this.add(tf);
        this.setVisible(true);

    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        display(e, "key typed");
    }


    @Override
    public void keyPressed(KeyEvent e) {
        display(e, "key pressed");
        // TODO Auto-generated method stub

    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
        display(e, "key Released");
    }
    private void display(KeyEvent e, String string) {
        // TODO Auto-generated method stub
         char c = e.getKeyChar();
         int keyCode = e.getKeyCode();
         String modifiers = e.isAltDown() + " " + e.isControlDown() + " " +e.isShiftDown();
         System.out.println(string + " " + c + " " + keyCode + " " + modifiers);

    }    
}

Mouse ์ด๋ฒคํŠธ

๋ฉ”์†Œ๋“œ

์„ค ๋ช…

mouseClicked(MouseEvent e)

์‚ฌ์šฉ์ž๊ฐ€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•œ ๊ฒฝ์šฐ์— ํ˜ธ์ถœ๋œ๋‹ค.

mouseEntered(MouseEvent e)

๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ๊ณ„์•ˆ์œผ๋กœ ์ปค์„œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

mouseExited(MouseEvent e)

๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ๊ณ„๋ฐ–์œผ๋กœ ์ปค์„œ๊ฐ€ ๋‚˜๊ฐ€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

mousePressed(MouseEvent e)

๋งˆ์šฐ์Šค๊ฐ€ ์ปดํฌ๋„ŒํŠธ์œ„์—์„œ ๋ˆŒ๋ ค์ง€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

mouseReleased(MouseEvent e)

๋งˆ์šฐ์Šค๊ฐ€ ์ปดํฌ๋„ŒํŠธ์œ„์—์„œ ๋–ผ์–ด์ง€๋ฉด ํ˜ธ์ถœ๋œ๋‹ค.

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MouseEventPractice extends JFrame implements MouseListener{
    MouseEventPractice(){
        this.setSize(300,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.addMouseListener(this);  
        add(panel);
        setVisible(true);

    }
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse clicked (# of clicks: " + e.getClickCount() + ")", e);
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse pressed (# of clicks: " + e.getClickCount() + ")", e);
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse released (# of clicks: " + e.getClickCount() + ")", e);
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse entered", e);
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        display("Mouse exited", e);
    }

    protected void display(String s, MouseEvent e) {
        System.out.println(s + " X=" + e.getX() + " Y=" + e.getY());
  }
}

Mouse์˜ ์ขŒํ‘œ ์–ป๊ธฐ

๋ฉ”์†Œ๋“œ

์„ค๋ช…

int getClickCount()

๋น ๋ฅธ ์—ฐ์†์ ์ธ ํด๋ฆญ์˜ ํšŸ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 2์ด๋ฉด ๋”๋ธ” ํด๋ฆญ์„ ์˜๋ฏธํ•œ๋‹ค.

int getX() int getY() Point getPoint()

์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋‹น์‹œ์˜ (x,y) ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์œ„์น˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ƒ๋Œ€์ ์ด๋‹ค.

int getXOnScreen() int getYOnScreen() int getLocationOnScreen()

์ ˆ๋Œ€ ์ขŒํ‘œ ๊ฐ’ (x,y)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋“ค ์ขŒํ‘œ๊ฐ’์€ ๊ฐ€์ƒ ํ™”๋ฉด์— ์ƒ๋Œ€์ ์ด๋‹ค.

int getButton()

์–ด๋–ค ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. NOBUTTON, BUTTON1, BUTTON2, BUTTON3 ์ค‘์˜ ํ•˜๋‚˜์ด๋‹ค.

boolean isPopupTrigger()

๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๊ฐ€ ํŒ์—… ๋ฉ”๋‰ด๋ฅผ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

String getMouseModifiersText(int)

์ด๋ฒคํŠธ ๋„์ค‘์˜ ์ˆ˜์‹ํ‚ค์™€ ๋งˆ์šฐ์Šค ๋ฒ„ํŠผ์„ ๊ธฐ์ˆ ํ•˜๋Š” ์„ค๋ช…๋ฌธ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฐธ์กฐ ํŽ˜์ด์ง€

Last updated

Was this helpful?