๐GUI ( Graphical User Interface = ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค )
- ์ด๋ฏธ์ง ํน์ ๊ทธ๋ํฝ์ผ๋ก ๋ฒํผ,๋ฉ๋ด ๋ฑ์ ๊ฐ์ง ํ๋ฉด์ ๋ง์ฐ์ค์ ๊ฐ์ ํธ๋ฆฌํ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ํธ๋ฆฌํ๊ฒ
์ ์ถ๋ ฅํ ์ ์๋๋ก ๋ง๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค.
โกGUI ํน์ง
- ๊ฐ๋ ฅํ GUI ์ปดํฌ๋ํธ ์ ๊ณต.
- ์ฌ์ด GUI ํ๋ก๊ทธ๋๋ฐ.
โก์๋ฐ ์ธ์ด์์ GUI ํ๋ก๊ทธ๋จ ์์ฑ
- ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑํ๋ค.
โก์๋ฐ์ GUI ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
โGUI ์ปดํฌ๋ํธ ์ด์ฉ.
- AWT ํจํค์ง์ Swing ํจํค์ง๋ฅผ ์ด์ฉํ๋ค.
- AWT ( ์ค๋ ์ปดํฌ๋ํธ )
.java.awt ํจํค์ง
์๋๋ ๋น ๋ฅด์ง๋ง ์ด์์ฒด์ ์ ๋ถ๋ด์ ์ค๋ค. / ๋ง๋ค๊ธฐ๊ฐ ์ด๋ ต๋ค.
- Swing ( ๊ฒฝ๋ ์ปดํฌ๋ํธ )
.javax.swing ํจํค์ง
๋ง๋ค๊ธฐ๊ฐ ์ฝ๋ค.
AWT์ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ปดํฌ๋ํธ ์ด๋ฆ์ด ๋ชจ๋ ๋๋ฌธ์ J๋ก ์์ํ๋ค.
AWT & Swing์ ๋์์ ์ฌ์ฉ ๋ถ๊ฐํ๋ฉด AWT๋ณด๋ค ์ค์ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค๊ณ ํ๋ค.
โก Swing ์ปดํฌ๋ํธ ์ข ๋ฅ
์์)
.JComponent // ๋ชจ๋ Swing ์ปดํฌ๋ํธ์ ์์ ํด๋์ค
.JPanel //Swing์์ ์ฌ์ฉํ๋ ํจ๋ ํด๋์ค.
.JLabel //Swing์์ ์ฌ์ฉํ๋ ๋ผ๋ฒจ ํด๋์ค.
//๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ์ปดํฌ๋ํธ.
.JTextArea //Swing์์ ์ฌ์ฉํ๋ textArea ํด๋์ค.
//์ฌ๋ฌ ์ค๋ก ์
๋ ฅ๊ฐ๋ฅํ ์ปดํฌ๋ํธ.
.JTextField //Swing์์ ์ฌ์ฉํ๋ textField ํด๋์ค.
//ํ ์ค๋ก ์
๋ ฅ๊ฐ๋ฅํ ์ปดํฌ๋ํธ.
.JList //Swing์์ ์ฌ์ฉํ๋ list ํด๋์ค.
//์ฌ์ฉ์๊ฐ ์ ๊ณต๋๋ ์์ดํ
์ ์ ํํด์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ
.JButton //Swing์์ ์ฌ์ฉํ๋ ๋ฒํผ ํด๋์ค.
//์ฌ์ฉ์๊ฐ ๋๋ฌ์ ์ ํด์ง ์ผ์ ํ๋ ์ปดํฌ๋ํธ
.JCheckBox //Swing์์ ์ฌ์ฉํ๋ ์ฒดํฌ ๋ฐ์ค ํด๋์ค.
//์ฌ์ฉ์๊ฐ ์ ๊ณต๋ ๋ฒํผ ์ค ์ฌ๋ฌ๊ฐ๋ฅผ ์ ํํด์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ
.JRadioButton //Swing์์ ์ฌ์ฉํ๋ ๋ผ๋์ค๋ฒํผ ํด๋์ค.
//์ฌ์ฉ์๊ฐ ์ ๊ณต๋ ๋ฒํผ ์ค ํ๋๋ฅผ ์ ํํด์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ.
.JComboBox //ํ๋ค์ด ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ค ์ ์๋ ์ฝค๋ณด ๋ฐ์ค ํด๋์ค
//์ฌ์ฉ์๊ฐ ์ ๊ณต๋ ์์ดํ
์ ์ ํํด์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ.
.JMenu //Swing์ ๋ฉ๋ด์์ ์ฌ์ฉํ๋ ๋ฉ๋ด ํด๋์ค.
//MenuItem์ ๋ฌถ์ด ์ ๊ณตํ๊ธฐ ์ํ ์ปดํฌ๋ํธ
.JMenuBar //Swing์ ๋ฉ๋ด ๋ฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ํด๋์ค.
//Menu๋ฅผ ์ฌ๋ ค๋๊ธฐ ์ํ ์ปดํฌ๋ํธ.
.jMenuItem //Swing์ ๋ฉ๋ด ๋ฐ์์ ์ฌ์ฉํ๋ ํด๋์ค.
//์ฌ์ฉ์์๊ฒ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํ ์ปดํฌ๋ํธ.
.JRadioButtonMenuItem //Swimg์ ๋ฉ๋ด์์ ์ฌ์ฉํ๋ ๋ผ๋์ค๋ฒํผ ํด๋์ค.
.JCheckBoxMenltem //Swing์ ๋ฉ๋ด์์ ์ฌ์ฉํ๋ ์ฒดํฌ๋ฐ์ค ํด๋์ค.
.JScrollPane //์คํฌ๋กค ์๋์ฐ๋ฅผ ๋ํ๋ด๋ ํด๋์ค
.JTabbedPane //๊ทธ๋ฃน์ ํ๋ ํํ๋ก ์ ๊ณตํ๋ ์๋์ฐ๋ฅผ ๋ํ๋ด๋ ํด๋์ค
.JTable //๋ฐ์ดํฐ๋ฅผ ํ๊ณผ ์ด๋ก ๋ํ๋ด๋ ํด๋์ค
//J๊ฐ ํฌํจ๋์ง ์๋ Swing ์ปดํฌ๋ํธ//
.ButtonGroup //๋ฒํผ์ ๊ทธ๋ฅฉํํ๊ธฐ ์ํ ํด๋์ค
.ImageIcon //์ด๋ฏธ์ง๋ฅผ ์์ด์ฝ์ผ๋ก ์บก์ํ ํ์ฌ ์ ๊ณตํ๋ ํด๋์ค
GUI | ์ค๋ช |
AWT | 1. AWT๋ ์ด์ ์ฒด์ ๊ฐ ์ ๊ณตํ๋ ์์์ ์ด์ฉํ์ฌ์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ค. 2. ๋ฌด๊ฑฐ์ด ์ปดํฌ๋ํธ ( ๋์์ด ๋๋ฆฌ๋ค ) & ์๋ฌ๊ฐ ๋ง์ด ๋ฐ์ํ๋ค. 3. AWT ์ ์ปดํฌ๋ํธ๋ ๋์์ธ์ ์ ์ ์๊ณ , ๊ธฐ๋ฅ๋ง ์๊ณ ์๋ค. 4. OS๋ง๋ค ์ปดํฌ๋ํธ์ ๋ชจ์์ด ๋ฌ๋ผ์ง๋ค. |
Swing | 1. ์ปดํฌ๋ํธ๊ฐ ์๋ฐ๋ก ์์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ํ๋ซํผ์์๋ ์ผ๊ด๋ ํ๋ฉด ์์ฑ ๊ธฐ๋ฅ์ ๊ฐ์ก๋ค. 2. ๊ฐ๋ฒผ์ด ์ปดํฌ๋ํธ ( ๋น ๋ฅด๋ค - OS์ ์ ๋ณด๊ตํ์ด ์ ๋ค. ) 3. JVM์์ ์ปดํฌ๋ํธ์ ๋์์ธ, ๊ธฐ๋ฅ์ ๋ชจ๋ ์๊ณ ์๋ค. ( AWT์ ๋จ์ ํด๊ฒฐ ) 4. ์๋ฌ๊ฐ ์ ๋ค. ( OS์ ์ ๋ณด๊ตํ์ด ์ ๊ธฐ ๋๋ฌธ์ด๋ค. Frame๋ง OS์์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ค. ) 5. AWT์ ๋ชจ๋ ์ปดํฌ๋ํธ์ ํธํ์ด ๋๋ค. 6. OS๊ฐ ๋ฌ๋ผ์ ธ๋ ๋์ผํ ๋ชจ์์ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋. 7. ์ด๋ฏธ์ง ์ ์ฉ์ด ์ฝ๋ค. |
๐AWT & Swing์ ์ฐจ์ด์ ์์ฝ!
AWT : ์๋์ฐ์ ์ข ์ / Swing : ์๋์ฐ์ ์ข ์๋์ง ์์
.java.awt ํจํค์ง .javax.swing ํจํค์ง
( ์ปดํฌ๋ํธ ํ์) Button ( ์ปดํฌ๋ํธ ํ์ ) JButton
( ์ปดํฌ๋ํธ ) Chois ( ์ปดํฌ๋ํธ ) JComboBox
TextArea ( ์คํฌ๋กค๋ฐ ์๋์ผ๋ก ์์ฑ) JTextArea ( ์คํฌ๋กค๋ฐ๋ฅผ ๋ฐ๋ก ์์ฑ ํ์ )
๐์ปจํฌ๋ํธ ( Component ) ์ ์ปจํ ์ด๋ ( Container )์ ์ดํด๋ณด์
๐คทโ๏ธ์ปดํฌ๋ํธ ๋?
- ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ถํ.
- ์ปจํ ์ด๋์ ํฌํจ๋์ด์ผ ํ๋ฉด์ ์ถ๋ ฅ๋ ์ ์๋ GUI ๊ฐ์ฒด. ( ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ์ ์๋ค. )
- ์ต์ํ์ ๋์์ธ์ ๊ตฌํํ ํด๋์ค ( ๋ ์ด์ ํ์๋ก ์ชผ๊ฐ์ง ์ ์๋ ๋์์ธ์ ์์ )
ex) JButton, JLabel, JTextaArea ๋ฑ
- ๋ชจ๋ GUI ์ปดํฌ๋ํธ์ ์ต์์ ํด๋์ค : java.awt.Component
- Swing ์ปดํฌ๋ํธ ์ต์์ ํด๋์ค : javax.swing.Jcomponent
- ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ Component ํด๋์ค๋ฅผ ๋ฐ๋์ ์์๋ฐ๋๋ค.
๐คทโ๏ธ์ปจํ ์ด๋๋?
- ์ปดํฌ๋ํธ๋ฅผ ๋ด๋ ๊ทธ๋ฆ ์ญํ . ( ์ปดํฌ๋ํธ ๋ก๋ถํฐ ์์ ๋ฐ์ ํ๋์ ์๋์ฐ ์์ญ์ ์๋ฏธํ๋ค. )
- ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ์ ์๋ GUI ์ปดํฌ๋ํธ. ( ๋ค๋ฅธ ์ปจํ ์ด๋์๋ ํฌํจ๋ ์ ์๋ค. )
- ๋ชจ๋ ์ปดํฌ๋ํธ๋ ์ปจํ ์ด๋์ ํฌํจ๋์ด์ผ ํ๋ฉด์ ์ถ๋ ฅ ๊ฐ๋ฅํ๋ค.
- ๋ฐ๋์ java.awt.Container ๋ฅผ ์์๋ฐ์์ผ ํ๋ค.
์ปจํ
์ด๋ ์ข
๋ฅ)
AWT ์ปจํ
์ด๋ : Panel, Frame, Applet, Dialog, Window
Swing ์ปจํ
์ด๋ : ๋ค๋ฅธ ์ปจํ
์ด๋์ ์ํ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌ ๊ฐ๋ฅํ ์ปจํ
์ด๋
์ค์ค๋ก ํ๋ฉด์ ์์ ์ ์ถ๋ ฅํ๋ ์ปจํ
์ด๋ : JFrame, JDialog, JApplet //์ต์์ ์ปจํ
์ด๋
โกํฌํจ ๊ด๊ณ
์ต์์ ์ปจํ ์ด๋ > ์ปจํ ์ด๋ > ์ปดํฌ๋ํธ
๐JFrame ์ปจํ ์ด๋ ํด๋์ค
โกSwing ํด๋์ค ๊ณ์ธต๊ตฌ์กฐ
- Component
: ํ๋ฉด์ ํ์๋์ด์ ์ฌ์ฉ์์ ์ํธ ์์ฉํ๋ ์๊ฐ์ ์ธ ๊ฐ์ฒด๋ฅผ ๋ํ๋ธ๋ค.
- Container
: ๋ด๋ถ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด ํด๋์ค์ add()๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋ ์์ ์ปดํฌ๋ํธ๊ฐ ์ถ๊ฐ๋๋ค.
- Window
: ๊ฒฝ๊ณ์ , ํ์ดํ ๋ฐ, ๋ฒํผ์ ๊ฐ์ง๊ณ ์๋ ์๋์ฐ์ด๋ค.
- Frame
: ์๋ฐ GUI ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์ด (AWT)
↓
- JFrame
: Frame ํด๋์ค๋ฅผ Swing์ ์ถ์์ ๋ง์ถ์ด ๋ณ๊ฒฝํ์๋ค.
โกSwing ํด๋์ค์ ์ค์ํ ๋ฉ์๋
package day0719;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class BlogGui01 extends JFrame {
public BlogGui01() {
super("ํ์ ๋ฉ์๋");
JLabel jiNumber = new JLabel("๋ฒํธ");
JTextField jtNumber = new JTextField(50);
JLabel jiName = new JLabel("์ด๋ฆ");
JTextField jtName = new JTextField(50);
JLabel jiGender = new JLabel("์ฑ๋ณ");
JRadioButton jrbGender = new JRadioButton("๋จ");
JRadioButton jrbGender2 = new JRadioButton("์ฌ");
JLabel jiMail = new JLabel("์ด๋ฉ์ผ");
JTextField jtMail = new JTextField(50);
// JButton jbData=new JButton("๋ฐ์ดํฐ",jtData);
JTextArea jtData = new JTextArea("๋ฐ์ดํฐ");
JButton jbAdd = new JButton("์ถ๊ฐ");
JButton jbDelete = new JButton("์ญ์ ");
JButton jbChange = new JButton("๋ณ๊ฒฝ");
JButton jbExit = new JButton("๋ซ๊ธฐ");
// ๋ ์ด์์ null
setLayout(null);
jiNumber.setLocation(20, 20);
jiName.setLocation(20, 50);
jiGender.setLocation(20, 80);
jiMail.setLocation(20, 110);
//// ๋ค์ ํ
jtNumber.setLocation(100, 20);
jtName.setLocation(100, 50);
jrbGender.setLocation(100, 80);
jrbGender2.setLocation(150, 80);
jtMail.setLocation(100, 110);
//// ๋ค์ ํ
jtData.setLocation(220, 20);
//// ๋ค์ ํ
jbAdd.setLocation(60, 170);
jbDelete.setLocation(150, 170);
jbChange.setLocation(240, 170);
jbExit.setLocation(330, 170);
jiNumber.setSize(80, 30);
jiName.setSize(80, 30);
jiGender.setSize(80, 30);
jiMail.setSize(80, 30);
//// ๋ค์ ํ
jtNumber.setSize(100, 30);
jtName.setSize(100, 30);
jrbGender.setSize(50, 30);
jrbGender2.setSize(50, 30);
jtMail.setSize(100, 30);
//// ๋ค์ ํ
jtData.setSize(250, 120);
//// ๋ค์ ํ
jbAdd.setSize(75, 30);
jbDelete.setSize(75, 30);
jbChange.setSize(75, 30);
jbExit.setSize(75, 30);
// ํฐํธ ์ข
๋ฅ ๋ฐ ์ฌ์ด์ฆ
jiNumber.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jiName.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jiGender.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jiMail.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jrbGender.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jrbGender2.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jtMail.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jtData.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jbAdd.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jbDelete.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jbChange.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
jbExit.setFont(new Font("๊ตด๋ฆผ", Font.BOLD, 20));
// ํ๋ฉด์ ์ถ๊ฐ
add(jiNumber);
add(jiName);
add(jiGender);
add(jiMail);
//// ๋ค์ ํ
add(jtNumber);
add(jtName);
add(jrbGender);
add(jrbGender2);
add(jtMail);
//// ๋ค์ ํ
add(jtData);
//// ๋ค์ ํ
add(jbAdd);
add(jbDelete);
add(jbChange);
add(jbExit);
// ์๋์ฐ ํฌ๊ธฐ ์ค์ setBounds(x,y,w,h)
setBounds(100, 200, 500, 260);
// ๊ฐ์ํ
setVisible(true);
// ํ๋ก๊ทธ๋จ ์ข
๋ฃ
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}// BlogGui01
public static void main(String[] args) {
new BlogGui01();
}// main
}// class
* ์ฐธ๊ณ ์๋ฃ
01. https://m.blog.naver.com/์ปดํฌ๋ํธ ์ข ๋ฅ
์๋ฐ ์ค์(swing) - ์ปดํฌ๋ํธ ์ข ๋ฅ
- AWT๋ณด๋ค ์ค์ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค. - AWT์ ์ค์์ ๋์์ ์ฌ์ฉ ๋ถ๊ฐ - ์ค์ import import javax.swi...
blog.naver.com
https://velog.io/@jyyoun1022/์ปจํ ์ด๋์ ์ปดํฌ๋ํธ ์ค๋ช
์๋ฐ GUI ํ๋ก๊ทธ๋๋ฐ 1.์ปจํ ์ด๋์์ปดํฌ๋ํธ
GUI์์ฉํ๋ก๊ทธ๋๋ฐ : ์๋์ฐ๋ ๋งคํจํ ์์ ๊ฐ์ ์ด์์ฒด์ ๋ฅผ GUI(๊ทธ๋ํฝ ์ฌ์ฉ์ ํ๊ฒฝ)์ด๋ผ ํ๋ค.GUI ํ๊ฒฝ์์ ๋์ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ GUI์์ฉํ๋ก๊ทธ๋๋ฐ์ด๋ผ ํ๋ค.JAVA์์๋ ๋ค์๊ณผ ๊ฐ์
velog.io
02. https://yooniron.tistory.com/JAVA GUI ์ค๋ช
[JAVA] JAVA์ GUI ๊ธฐ์ด, awt, swing ์์ฑ ์ ์ฐจ, ์ปจํ ์ด๋์ ์ปดํฌ๋ํธ, ๋ฐฐ์น ๊ด๋ฆฌ์ | Yoon's Dev
JAVA์ GUI ๊ธฐ์ด, awt, swing ์์ฑ ์ ์ฐจ, ์ปจํ ์ด๋์ ์ปดํฌ๋ํธ, ๋ฐฐ์น ๊ด๋ฆฌ์ ํ์ต ๋ชฉํ JAVA์ GUI GUI ์์ฑ์ ์ฐจ ๊ธฐ์ด ์ปจํ ์ด๋์ ์ปดํฌ๋ํธ ๋ฐฐ์น ๊ด๋ฆฌ์ 1. JAVA์ GUI โ ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค โ Graphic
yooniron.tistory.com
https://raccoonjy.tistory.com/JAVA GUI ์ค๋ช
์๋ฐ(Java)์ ๊ธฐ์ด ๋ฐ์ด๋ด๊ธฐ - Java GUIโ
์๋ ํ์ธ์. ์ด๋ฒ ์๊ฐ์๋ ์๋ฐ GUI์ ๋ํด ๊ณต๋ถํ๊ฒ ์ต๋๋ค. 1. ์๋ฐ GUI - java.awtํจํค์ง์ ํด๋์ค ์ด์ฉ - ๋ง๋ค๊ธฐ๊ฐ ์ฌ์. - ๋๋ฆฌ๊ณ ๋ฌด๊ฑฐ์. - javax.swing ํจํค์ง์ ํด๋์ค ์ด์ฉ - ๋ง๋ค๊ธฐ๊ฐ ํ๋ฌ - ๋น
raccoonjy.tistory.com
https://velog.io/@ro_sie/JAVA GUI ์ค๋ช
JAVA :: GUI(1)
๐ GUI๋? ๐ฌ ์ด๋ฏธ์ง ํน์ ๊ทธ๋ํฝ์ผ๋ก ๊ทธ๋ฆฐ ๋ฒํผ, ๋ฉ๋ด ๋ฑ์ ๊ฐ์ง ํ๋ฉด์ ๋ง์ฐ์ค์ ๊ฐ์ ํธ๋ฆฌํ ์ ๋ ฅ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ํธ๋ฆฌํ๊ฒ ์ ์ถ๋ ฅํ ์ ์๋๋ก ๋ง๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
velog.io
03. https://m.blog.naver.com/ AWT, Swing ๋น๊ต
AWT, SWING ๋น๊ต
์ ์ฐจ์ด์ ์ ๋๋ผ์ จ๋์ ..๋ณ์ฐจ์ด์๋น SWING์ด ์ด์๋ค๋๋ฐ ใฑ..๊ทธ๋ฅ SWING์ ์ข๋ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ด...
blog.naver.com