사용자에게 더욱 쉬운 인터페이스를 제공 하기 위해서 정보 제공
Abstract Windowing Toolkit
자바가 처음 나왔을때 부터 포함된 제일 기본적인 GUI 라이브러리 이다.
java.awt.*
AWT native 운영체제의 도움으로 작동하기 때문에 운영체제에 부담이 크다 하지만 그만큼 처리 속도가 빨르다.
AWT 기반으로 만들어진 라이브러리
AWT의 컴포넌트에 J 를 더한 컴포넌트들.
javax.swing.*
Swing은 운영체제에 의존 하지 않는다 .
스윙 컴포넌트 의 공통 속성을 구현한 추상 클래스

다른 컴포넌트들을 포함할수있는 컴포넌트로 다른 컨테이너도 포함 가능하다.
AWT Container: Panel, Frame, Applet, Dialog, Window
Swing Container: Jpanel, JFrame, JDialog, JWindow
독립적으로 화면에 출력이 가능한 컴포넌트: JFrame , JDialog, JApplet
다른 컴포넌트는 컨테이너에 포함되어야 출력가능 하다.
예시 1)
import javax.swing.*
public class MyFrame extends JFrame{
public MyFrame(){
setTitle(" My Title");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);//frame size
setVisible(True);//기본값 false
}
public static void main(String[] args){
MyFrame my = new MyFrame():
}
}
예시 2)
import javax.swing.*
public class MyContainer extends JFrame{
public MyContainer(){
setTitle(" My Title");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//종류버튼을 누르면 응용프로그램 종료.
Container pane = getContentPane();
pane.setBackground(Color.RED);
pane.setLayout(new FlowLayout());
pane.add(new JButton("HI"));
setSize(300,300);//container size
setVisible(True);//기본값 false
}
public static void main(String[] args){
MyFrame my = new MyFrame():
}
}
응용프로그램을 종료하기위해선 System.exit(0); 필요하지만
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 하면 종료 버튼으로 중료시킬수있다.
Swing GUI 프로그램을 실행하면 main함수만 실행되는 것이 아니다. main 함수에서는 응용프로그램을 실행하는것이고
이벤트 분배 스레드가 실행된다 따라서 GUI 실행시킬때 두가지의 스레드가 실행됨
응용프로그램은 모든 스레드가 종료되어야 종료된다 하나라도 있으면 계속 실행중,
배치관리자 Laytou manager
4가지 대표 배치
Window , Frame , Dialog 는 Boder Layout을 기본으로 사용한다.
Panel , Applet 은 FlowLayout 기본으로 사용.
.setLayout(new -Layout()) 으로 사용
예) FlowLayout
Container c = frame.getContentPane();
c.setLayout( new FlowLayout());//레이아웃 설정
.add( new - ())컴포넌트 추가
c.add(new Jbutton());
//레이아웃 설정
//왼쪽 정렬, 30 horizontal gap, 40 vertical gap
c.setLayout(new FlowLayout(FlowLayout.left, 30,40))
예) Border Layout
import javax.swing.*;
import java.awt.*;
public class Main extends JFrame {
public Main() {
setTitle("BorderLayout Sample");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(new JButton("Calculate"),BorderLayout.CENTER);
c.add(new JButton("North"), BorderLayout.NORTH);
c.add(new JButton("South"), BorderLayout.SOUTH);
c.add(new JButton("East"), BorderLayout.EAST);
c.add(new JButton("West"), BorderLayout.WEST);
setSize(500, 300); // 프레임 크기 500×300 설정
setVisible(true); // 프레임을 화면에 출력
}
public static void main(String[] args) {
new Main();
}
}


응용프로그램 자체적으로 컨테이너의 크기와 위치를 결정한다.
컨테이너 제거: container.setLayout(null)
컨테이너 설정