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์ 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

๊ตฌ์ฒด์ ์ธ ์์น ์ ํ๊ธฐ
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?