• 그래픽을 이용하기 위함
-> 사용자에게 이해하기 쉬운 모양의 정보를 제공
• 강력한 GUI 컴포넌트를 제공한다.
• GUI 프로그래밍이 쉽다.
• GUI 컴포넌트와 그래픽을 이용
-> AWT 패키지와 Swing 패키지 이용
• AWT : java.awt 패키지 사용
• Swing : javax.swing 패키지 사용
• 자바가 처음 나온 시기에 함께 배포된 GUI 라이브러리
• java.awt 패키지를 사용
• AWT 컴포넌트는 중량 컴포넌트이다.
-> 처리 속도는 빠르지만 운양체제에 부담이 많이 간다.
-> native 운영체제의 GUI 컴포넌트의 도움을 받기 때문
• AWT 기술 기반으로 순수 자바 언어로 만들어진 라이브러리
• AWT 기능 + 고급 컴포넌트
• AWT 컴포넌트에 J를 붙인 이름의 클래스
• 그 외 J로 기작하는 클래스
• javax.swing 패키지를 사용
• Swing 컴포넌트는 경량 컴포넌트이다.
-> native 운영체제에 의존 x
• 클래스 이름이 J로 시작한다.
• 쉽게 GUI 프로그래밍이 가능
• JComponent를 상속받는 클래스
-> 공통적인 속성을 구현한 추상 클래스 (인스턴스 생성 x)
•AWT의 Container를 상속받는 클래스
-> JFrame, JDialog 등
• 컨테이너에 포함되어야 화면에 출력할 수 있는 순수 컴포넌트
• 모든 컴포넌트는 java.awt.Component를 상속받는다.
• 모든 스윙 컴포넌트는 javax.swing.JComponent를 상속받는다.
• 다른 GUI 컴포넌트를 포함할 수 있는 컴포넌트
• java.awt.Container를 상속
• 다른 컨테이너에 포함 가능
• AWT 컨테이너와 Swing 컨테이너가 존재
• 다른 컨테이너에 속하지 않고도 독립적으로 출력이 가능한 컨테이너
• 모든 컴포넌트는 컨테이너에 포함되어야 화면에 출력이 가능하다.
• JFrame, JDialog, JApplet
• 모든 스윙 컴포넌트를 포함하는 최상위 GUI 컨테이너
• JFrame을 상속
• 컴포넌트를 화면에 출력하기 위해서는 스위 프레임에 포함되어야 한다.
• 프레임 : 스윙 프로그램의 기본 틀
• 메뉴바 : 메뉴들이 포함되는 공간
• 컨텐트 팬 : GUI 컴포넌트들이 포함되는 공간
// 스윙 프레임 만들기
import javax.swing.*;
public class SwingFrameEx extends JFrame {
public SwingFrameEx() {
setTitle("스윙 프레임 만들기 예제");
setSize(500, 500); // 프레임의 크기를 설정
setVisible(true); // 프레임을 출력하기 위해서 필요
}
public static void main(String[] args) {
SwingFrameEx frame = new SwingFrameEx();
}
}
• 실행 결과
// 프레임의 타이틀을 다는 방법
public SwingFrameEx() {
// 1.메소드를 호출하여 설정
setTitle("타이틀 이름");
// 2. Jframe의 생성자를 호출하는 방법
super("타이틀 이름");
}
// 컨텐트팬 알아내기
Container contentPane = frame.getContentPane();
// 컴포넌트 달기
Container contentPane = frame.getContentPane();
JButton jb = new JButton("OK");
contentPane.add(jb);
// 컨텐트팬 변경하기
JPanel jp = new JPanel();
frame.setContentPane(jp);
import javax.swing.*;
import java.awt.*;
public class SwingFrameEx extends JFrame {
public SwingFrameEx() {
setTitle("컴포넌트 붙이기 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 프레임 종료버튼 사용 시 응용 프로그램도 종료시키는 방법
// 컨텐트팬 알아내기
Container contentPane = getContentPane();
// 컨텐트팬 배경색 설정
contentPane.setBackground(Color.YELLOW);
// 컨턴트팬 레이아웃 설정
contentPane.setLayout(new FlowLayout());
// 프레임에 JButton 컴포넌트 추가하기
contentPane.add(new JButton("Java"));
contentPane.add(new JButton("Python"));
contentPane.add(new JButton("C"));
setSize(300, 200);
setVisible(true);
}
public static void main(String[] args) {
SwingFrameEx frame = new SwingFrameEx();
}
}
• 실행 결과