Graphic User Interface
의 약자이며 프로그램이 실행될 때 메뉴바, 툴바 등에 버튼들이 보여지게 해서 마우스 클릭과 같은 동작으로 메뉴를 실행시키며 진행하는 사용 방식이다.
GUI 이전에 학습한 내용들은 Command Line Interface
즉 CLI 의 실행 방식으로 사용하였다.
Java 에서는 GUI 프로그래밍 ( 윈도우 프로그래밍 ) 을 위한 도구로 다양한 컴포넌트 API를 제공한다. AWT 는 Java 전용 컴포넌트가 아닌 OS용 컴포넌트로 표현되는 것이 특징이다.
즉, 실행 환경 OS 에 따라 GUI 화면의 모양이 다르다.
Java AWT를 확장한 GUI 프로그래밍 도구로 AWT 보다 더 많은 종류의 컴포넌트를 제공하며, OS용 컴포넌트를 사용하지 않고 100% Java 전용 컴포넌트를 사용한다. AWT 컴포넌트 클래스 명 앞에 J
를 붙여 구분한다.
AWT 에서 Button 이라면, Swing 에서는 JButton
즉, OS가 무엇이던 간에 동일한 모양을 유지한다.
컨테이너는 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트 이다.
다른 컨테이너에 포함될 수도 있으며, 독립적으로 존재할 수 있다.
스스로 화면에 자기 자신을 출력하는 컨테이너로는 JFrame
, Jdoalog
, JApplet
이 있다.
컨테이너에 포함되어 출력되는 GUI 객체이다.
GUI 컴포넌트의 최상위 클래스는 java.awt.Component 클래스이다.
Swing 컴포넌트의 최상위 클래스는 javax.swing.JComponet 이다.
package sample;
import java.awt.GridLayout;
import javax.swing.*;
public class GUIEx extends JFrame {
public GUIEx() {
setTitle("컨테이너 & 컴포넌트");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(1, 2, 20, 20));
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.setLayout(new GridLayout(3, 1));
panel1.add(new JLabel("JLabel - Panel 1"));
panel1.add(new JTextField("TextField"));
panel1.add(new JButton("Ok"));
panel1.setSize(200, 300);
panel2.setLayout(new GridLayout(5, 1));
panel2.add(new JLabel("JLabel - Panel 2"));
panel2.add(new JRadioButton("JRadioButton"));
panel2.add(new JRadioButton("JRadioButton"));
panel2.add(new JCheckBox("JCheckBox"));
panel2.add(new JCheckBox("JCheckBox"));
panel2.setSize(200, 300);
add(panel1);
add(panel2);
setVisible(true);
}
public static void main(String[] args) {
new GUIEx();
}
}
1개의 JFrame
안에 좌우 2개의 JPannel
좌측 JPanel
위에서부터 JLabel
, JTextField
, JButton
우측 JPanel
위에서부터 JLabel
, JRadioButton
, JCheckBox
최상의 컨테이너인 JFrame
안에 JPanel
, JButton
등 컴포넌트를 붙인 JPanel
을 붙인다.