본문 바로가기

프로그램언어/자바

AWT와 스윙(Swing)

AWT와 Swing 패키지

AWT(Abstract Windowing Toolkit) 스윙(Swing)
GUI 컴포넌트
Frame, Window, Panel, Dialog, Button 등 AWT의 컴포넌트들은 운영체제의 도움을 받아 화면에 출력
GUI 컴포넌트
JFram, JWindow, JPanel, JButton 등 Swing 컴포넌트들은 순수 자바 언어로 작성된 것으로 화면에 출력

 

컨테이너와 컴포넌트

컨테이너란?

다른 GUI 컴포넌트를 포함할 수 있는 컴포넌트이다.

컨테이너는 컴포넌트이면서 동시에 컨테이너이다.

java.awt.Component를 상속받기 때문에 컨테이너가 컴포넌트이기도 한 것이다.

컨테이너로 작동하는 클래스

AWT 컨테이너 - Frame, Panel, Applet, Dialog, Window

Swing 컨테이너 - JFrame, JPanel, JApplet, JDialog, JWindow

 

컴포넌트란?

컨테이너와 달리 다른 컴포넌트를 포함할 수 없으며, 컨테이너에 포함되어야 비로소 화면에 출력 될 수 있는 GUI 객체이다.

java.awt.Component를 상속받기 때문에, Component클래스에는 모든 컴포넌트들의 공통적인 속성과 기능이 작성되어 있다.(크기, 모양, 위치, 색, 폰트등에 관한 정보를 관리하는 변수와 그리기, 이동, 삭제 등 이벤트 처리에 관한 메소드 등 다양한 기능을 제고하는 함수가 있다.)

javax.swing,JComponent를 상속받으면, JComponent에서 스읭 컴포넌트들의 공통적인 기능이 작성되어 있다.

 

 

스윙 패키지 사용을 위한 import문

import java.awt.*;                     // 폰트 등 그래픽 처리를 위한 클래스들의 경로명
import java.awt.event.*;             // 이벤트 처리에 필요한 기본 클래스들의 경로명
import javax.swing.*;                // 스윙 컴포넌트 클래스들의 경로명
import javax.swing.event.*;        // 스윙 이벤트 처리에 필요한 클래스들의 경로명

 

스위으로 프레임 만들기


javax.swing.*;

 

public class MyFrame extends JFrame {     // JFrame 상속받음

    public MyFrame() {
        setTitle("스윙 프레임 예제1");     // 제목설정
        setSize(300,300);    // 프레임 크기 300x300
        setVisible(true);     // 프레임 출력
    }

    public static void main(String[] args) {
        MyFrame frame = new MyFrame();
    }
}


실행 결과]

 

 

3개의 버튼 컴포넌트를 가지 스윙 프레임 만들기


import javax.swing.*;

import java.awt.*;

 

public class ContentPaneEx extends JFrame {

    public ContentPaneEx() {

        setTitle("컨텐트팬에 버튼3개만들기");                     // 프레임 타이틀  달기

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // 프레임 윈도우를 닫으면 프로그램을 종료하도록 설정

 

        Container contentPane = getContentPane();    // 컨텐트 팬을 알아낸다.
        contentPane.setBackground(Color.ORANGE);    // 컨텐트팬의 배경색을 오렌지색으로 설정

        contentPane.setLayout(new FlowLayout());       // 컨텐트팬에 FlowLayout 배치관리자 달기

 

        contentPane.add(new JButton("OK"));      // 확인 버튼 달기

        contentPane.add(new JButton("Cancel"));  // 취소 버튼 달기

        contentPane.add(new JButton("Ignore"));  // 무시 버튼 달기

 

        setSize(300, 150); // 프레임 크기 300x150 설정
        setVisible(true); // 화면에 프레임 출력
    }

    public static void main(String[] args) {
        new ContentPaneEx();
    }
}


실행 결과]