μμ λ μ§/μ 리λ μ§
2022.04.05/2022.04.09
νμ΅μ£Όμ
- 08 GUI
νμ΅λ΄μ©
08 GUI
- GUI(κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€) → GUIλ μ»΄ν¬λνΈλ‘ ꡬμ±λλ€.
- μ»΄ν¬λνΈ: λ μ΄λΈ, λ²νΌ, ν μ€νΈ νλμ κ°μ GUIλ₯Ό μμ±νλ κΈ°λ³Έμ μΈ λΉλ© λΈλ‘. (μλμ° μμ€ν μμλ 컨νΈλ‘€μ΄λΌκ³ λ λΆλ₯Έλ€.)
- μλ°μμλ μ¬μ©μ μΈν°νμ΄μ€λ κ°μ²΄λ‘ λ§λ€μ΄μ§λ€.
μλ° GUIμ μ’ λ₯
AWT(Abatract Windows Toolkit)
- μ΄κΈ° μλ° λ²μ μμ μ 곡νλ GUI
- μ΄μ 체μ κ° μ 곡νλ μμμ μ΄μ©ν΄ μ»΄ν¬λνΈ μμ±
- μ₯μ : μ¬λ¬ μ΄μ 체μ μμ μ½κ² μ»΄ν¬λνΈλ₯Ό μ 곡ν μ μμ(→μλ° νλ‘κ·Έλ¨μ΄ κ°λ³κ³ , μμ)
- λ¨μ : μ€νλλ μ΄μ 체μ μ λ°λΌ μ»΄ν¬λνΈμ λͺ¨μ΅μ΄ λ¬λΌμ§
μ€μ(SWING)
- μ»΄ν¬λνΈκ° μλ°λ‘ μμ±λμ΄ μμ
- μ₯μ : μ΄λ μ΄μ 체μ μμ μ€νν΄λ λκ°μ νλ©΄μ 보μ¬μ€, λ€μν μ»΄ν¬λνΈ μ 곡
- λ¨μ : μλ° νλ‘κ·Έλ¨μ΄ 무거μμ§κ³ 컀μ§
- μ€μμ μνλ ν΄λμ€λ€μ λͺ¨λ μμ Jλ₯Ό λΆμ(AWTλ³΄λ€ λ¦κ² μ κ·Έλ μ΄λλμ΄μ)
컨ν μ΄λμ μ»΄ν¬λνΈ
- λ¨μ μ»΄ν¬λνΈ: λ μ΄λΈ, 체ν¬λ°μ€ λ±(JButton, JLabel, JCheckBox λ±)
- 컨ν μ΄λ μ»΄ν¬λνΈ: λ€λ₯Έ μ»΄ν¬λνΈλ₯Ό ν¬ν¨ν μ μλ μ»΄ν¬λνΈ(JFrame, JPanel λ±)
컨ν μ΄λ μ’ λ₯
- μ΅μμ 컨ν μ΄λ: λ€λ₯Έ 컨ν μ΄λ μμ ν¬ν¨λ μ μλ 컨ν μ΄λ(νλ μ(JFrame), μ νλ¦Ώ(JAplet) λ±)
- μΌλ° 컨ν μ΄λ: λ€λ₯Έ 컨ν μ΄λμ ν¬ν¨λ μ μλ 컨ν μ΄λ(ν¨λ(JPanel), μ€ν¬λ‘€νμΈ(JScrollPane) λ±)
GUI μμ± μ μ°¨
1. 컨ν μ΄λλ₯Ό μμ±νλ€.
2. μ»΄ν¬λνΈλ₯Ό μΆκ°νλ€.
νλ μ μμ±νλ 3κ°μ§ λ°©λ²
β νλμ ν΄λμ€μ λ©μΈ λ©μλλ₯Ό λ§λ€κ³ λ©μΈ λ©μλμμ νλ μ κ°μ²΄λ₯Ό μμ±ν΄ λ©μμ§νκΈ°
import javax.swing.*; // μλ°μ μλ ν¨ν€μ§λ java. μ΄μ§λ§, λμ€μ μΆκ°λ κ²½μ° javax. λ₯Ό μ¬μ©
public class FrameTest{
public static void main(String[] args){
JFrame f = new JFrame("Frame Test"); // λ©μΈ λ©μλμμ κ°μ²΄ μμ± (f:κ°μ²΄μ°Έμ‘°λ³μ)
f.setSize(300, 200);
f.setDefaultCloseOperation(JFrame.EXTI_ON_CLOSE); // μ°½ λ«κΈ°(νλ‘κ·Έλ¨ μ’
λ£)
f.setVisible(true); // νλ©΄μ 보μ΄λλ‘(true:보μ, flase:μ보μ)(μ보μ΄λλΌλ νλ‘κ·Έλ¨ μ’
λ£X)
}
}
β‘ νλ μ ν΄λμ€μ (JFrame μμλ°μ) λ©μΈ λ©μλκ° μλ ν΄λμ€ λ°λ‘ λ§λ€κΈ°
import javax.swing.*;
public class MyFrame extends JFrame{ // JFrame μ»΄ν¬λνΈ μμλ°μ ν΄λμ€ μμ±
public MtFrame(){
setSize(300, 200); // 4~6: ν΄λμ€μ μμ±μμμ μκΈ° μμ μ λ©μλ νΈμΆ('this.~' μλ΅λ νν)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
public class MyFrameTest{
public static void main(String[] args){
MyFrame f = new MyFrame();
}
}
β’ JFrameμΌλ‘λΆν° μμλ°μ νλ μ ν΄λμ€κ° λ©μΈ λ©μλλ₯Ό λ©€λ²λ‘ κ°μ§κ³ μκΈ°
import javax.swing.*;
public class MyFrame extends JFrame{
public MyFrame(){
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("MyFrame");
setVisible(true);
}
public static void main(String[] args){
MyFrame f = new MyFrame();
}
}
νλ μμ μ»΄ν¬λνΈ μΆκ°νκΈ°
컨ν μ΄λ μμ± ν μνλ μ»΄ν¬λνΈ κ°μ²΄λ€μ 컨ν μ΄λμ μΆκ°νλ€.
μ΄ κ²½μ°, JFrame κ°μ²΄κ° 컨ν μ΄λκ° λλ€.
import javax.swing.*;
import java.awt.FlowLayout;
public class MyFrame extends JFrame{
public MyFrame(){
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("MyFrame");
setLayout(new FlowLayout());
JButton button = new JButton("λ²νΌ"); // 9~10: JButtonμ κ°μ²΄λ₯Ό μμ±ν ν νλ μμ μΆκ°
this.add(button); // MyFrameμ λ©μλλ‘ 'this.~' μλ΅κ°λ₯
setVisible(true);
}
}
public class MyFrameTest{
public static void main(String[] args){
MyFrame f = new MyFrame();
}
}
JFrame ν΄λμ€
μ€μμ 3κ°μ§ μ΅μμ 컨ν μ΄λ(JFrame, JDialog, JApplet)λ₯Ό κ°μ§κ³ μλ€.
μ΄λ€ ν΄λμ€λ₯Ό μ¬μ©ν λ μμμΌ ν μ
- 컨ν μ΄λλ μ»΄ν¬λνΈλ€μ νΈλ¦¬(tree) ννλ‘ μ μ₯νλ€. μ΅μμ 컨ν μ΄λλ μ΄ νΈλ¦¬μ λ£¨νΈ λ Έλκ° λλ€.
- κ° μ»΄ν¬λνΈλ€μ λ± ν λ²λ§ 컨ν μ΄λμ ν¬ν¨λ μ μλ€. μ΄λ―Έ λ€λ₯Έ 컨ν μ΄λμ λ€μ΄ μλ μ»΄ν¬λνΈλ₯Ό λ λ€λ₯Έ 컨ν μ΄λμ λ£μΌλ©΄ μ λλ€.
- μ΅μμ 컨ν μ΄λλ λ΄λΆμ μ½ν νΈ νμΈ(content pane)μ κ°μ§κ³ μλ€. μ¬κΈ°μ νλ©΄μ 보μ΄λ μ»΄ν¬λνΈλ₯Ό μ μ₯νλ€.
- μ΅μμ 컨ν μ΄λλ λ©λ΄λ°λ₯Ό μΆκ°ν μ μλ€.
JFrameμ μ‘°μ ν΄λμ€
JFrame ν΄λμ€λ λ§μ μ‘°μ ν΄λμ€λ₯Ό κ°μ§κ³ μλ€. ꡬ체μ μΌλ‘ λ€μκ³Ό κ°μ μμ κ³μΈ΅ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€.
Object ← Component ← Container ← Window ← Frame ← JFrame |
Component: νλ©΄μ νμλμ΄ μνΈ μμ©νλ μκ°μ κ°μ²΄
Container: λ΄λΆμ λ€λ₯Έ μ»΄ν¬λνΈλ₯Ό μΆκ°ν μ μλ κΈ°λ₯ μ 곡
Window: κ²½κ³μ , νμ΄ν λ°, λ²νΌμ κ°μ§κ³ μλ μλμ°
Frame: μλ° GUI μ ν리μΌμ΄μ μ κΈ°μ΄
μ£Όμ λ©μλ
β SetLocation(x, y) / setSize(width, height) / setBounds(x, y, width, height)
: νλ μμ μμΉμ ν¬κΈ°λ₯Ό μ€μ νλ€.
β setIconImage(IconImage)
: μλμ° μμ€ν μ νμ΄ν λ°, νμ€ν¬ μ€μμ²μ νμν μμ΄μ½μ μλ €μ€λ€.
β setTitle()
: νμ΄ν λ°μ μ λͺ©μ λ³κ²½νλ€.
β setResizable(boolean)
: μ¬μ©μκ° ν¬κΈ°λ₯Ό μ‘°μ ν μ μλμ§λ₯Ό μ€μ νλ€.
κΈ°μ΄ μ»΄ν¬λνΈ
ν¨λ(panel)
- μ»΄ν¬λνΈλ€μ ν¬ν¨νκ³ μλλ‘ μ€κ³λ 컨ν μ΄λ
- ν¬λͺ μνκ° κΈ°λ³Έμ΄λ€.(μ¦, ν¨λμ κΈ°λ³Έμ μΌλ‘ λμ 보μ΄μ§ μλλ€.)
- μ»΄ν¬λνΈλ€μ νλ©΄μ νμνλ €λ©΄ νλ μμ ν¨λμ μΆκ°ν ν ν¨λ μμ μ»΄ν¬λνΈλ₯Ό μΆκ°νλ€.
- κ°μ₯ μ€μν λ©μλ: add() / remove() → μ»΄ν¬λνΈλ₯Ό μΆκ° / μμ
λ μ΄λΈ(label)
- νΈμ§μ΄ λΆκ°λ₯ν ν μ€νΈλ₯Ό νμνκΈ° μν μ»΄ν¬λνΈ
- λ μ΄λΈμ ν μ€νΈμ μ΄λ―Έμ§λ₯Ό λμμ νμν μ μλ€.
- ν°νΈμ μ’ λ₯, ν¬κΈ°, μμ λ± ν μ€νΈμ μμ±μ λ³κ²½ν μ μλ€.
ν μ€νΈ νλ(text field)
- μ¬μ©μκ° ν μ€μ ν μ€νΈλ₯Ό μ λ ₯ν μ μλ κΈ°λ³Έμ μΈ ν μ€νΈ μ½νΈλ‘€
- ν μ€ μ΄μμ ν μ€νΈ μ λ ₯μ΄ νμνλ©΄ ν μ€νΈ μμ(text area)μ μ¬μ©ν΄μΌ νλ€.
ν μ€νΈ νλμ μ’ λ₯
- JTextField - κΈ°λ³Έμ μΈ ν μ€νΈ νλ
- JFormattedTextField - μ¬μ©μκ° μ λ ₯ν μ μλ λ¬Έμ μ ν
- JPasswordField - μ¬μ©μκ° μ λ ₯νλ λ΄μ© μ 보μ
- JComboBox - μ¬μ©μκ° μ§μ μ λ ₯ν μ μμ§λ§ νλͺ© μ€ μ ν κ°λ₯
- JSpinner - ν μ€νΈ νλμ λ²νΌμ μ‘°ν©. μ΄μ λ²νΌκ³Ό λ€μ λ²νΌ μ ν κ°λ₯
λ²νΌ(button)
- μ¬μ©μκ° λ²νΌμ ν΄λ¦νμ κ²½μ°, μ΄λ²€νΈκ° λ°μ
- λ³κ²½ κ°λ₯ν κ²: λ²νΌ μμ ν μ€νΈ, λ²νΌ ν μ€νΈμ ν°νΈ, λ²νΌμ μ κ²½μ, λ°°κ²½μ, λ²νΌμ μν(νμ±, λΉνμ±)
λ²νΌμ μ’ λ₯
JButton - μΌλ°μ μΈ λ²νΌ
JCheckBox - 체ν¬λ°μ€ λ²νΌ
JRadioButton - λΌλμ€ λ²νΌ. κ·Έλ£Ή μ€ νλμ λ²νΌλ§ μ²΄ν¬ κ°λ₯
GUI
1. νλ μμ΄ μμ΄μΌ νλ€.
2. νλ μ μ μ»΄ν¬λνΈλ₯Ό λ°°μΉνλ€.
3. μ€μ μμ€ μ½λλ₯Ό μμ±ν΄μ μ΄λ²€νΈ μ²λ¦¬λ₯Ό ν΄μ€μΌ νλ€.
νμ΅λ΄μ© μ΄ν΄λ
90% μ λ. GUIμ λν΄ κ°λ μ μ΄ν΄νκ² μΌλ, μ€μ μ μ©κΉμ§ κ°λ₯ν μ§ λͺ¨λ₯΄κ² λ€.
νμ΅νλ λμ보기
GUIμ λν΄ λ€μ΄λ λ΄€λλ°, μ²μ λ°°μ°λ λ΄μ©μ΄λΌ μ μ νλ€. μμ μ λ£κ³ 곡λΆνλ©° μλ‘μ΄ κ²λ€μ λ§μ΄ λ°°μΈ μ μμλ€. κ·Έλμμ νλ‘κ·Έλλ° μΈμ΄λ₯Ό μ΄μ©ν΄ λ¬Έμ λ₯Ό νΈλ κ²μ κ·Έμ³€μ§λ§, μ€μ νλ‘κ·Έλ¨μ μμ±ν΄μ μ€μ§μ μΈ λ¬΄μΈκ°λ₯Ό λμΆν΄λ΄λ κ²μ΄ ν₯λ―Έλ‘μ λ€.
λ€μ νμ΅κ³ν
μλ° GUIμ μ΄ν΄2
'Study > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°νλ‘κ·Έλλ° 7μ£Όμ°¨ μ 리 (0) | 2022.04.25 |
---|---|
μλ°νλ‘κ·Έλλ° 6μ£Όμ°¨ μ 리 (0) | 2022.04.16 |
μλ°νλ‘κ·Έλλ° 4μ£Όμ°¨ μ 리 (0) | 2022.04.03 |
μλ° κ³΅λΆ μ€ κΆκΈν μ (0) | 2022.04.03 |
μλ°νλ‘κ·Έλλ° 3μ£Όμ°¨ μ 리 (0) | 2022.03.27 |