반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

꿈꾸는 사람.

[Java] Swing. 개요. 컨테이너 예제. 본문

IT/Language_Design Patterns

[Java] Swing. 개요. 컨테이너 예제.

현무랑 니니 2016. 2. 25. 16:35
반응형

Java에서 Swing 개념을 알아보고 간단한 사용 예제를 보이겠다.

Swing은 이벤트 기반의 GUI toolkit으로 보면 된다.

자사에서는 버튼, 콤보상자 등을 GUI 컴퍼넌트 또는 스윙 컴포넌트라 한다.

스윙으로 화면을 설계하고 스윙 컴포넌트들을 화면에 배치하여 사용자가 이용할 화면을 구성한다.

이 화면을 구성하기 위해 컨테이너라는 특수 컴포넌트에 넣어서 화면에 표시한다.

실제 화면에 배치할 때는 레이아웃매니저를 이용한다.

1. 스윙의 개요

AWT(Abstract Window Toolkit)가 운영체계와 운영체계가 제공하는 자원을 그대로 사용하기 때문에 시스템에 의존적이다.

스윙은 이런 AWT의 제약을 극복하기 위해 만들어진 플랫폼 독립적인 GUI toolkit이다.

스윙의 아키텍처는 모델-뷰-컨트롤러(Model–View–Controller, MVC)란 아키텍처 패턴을 사용한다.

또한, 스윙은 스레드를 하나만 만드는 단일-스레드 방식을 따른다.

2. 스윙을 이용한 화면 구성

▶화면 설계 순서

1. 스윙 컴포넌트 생성

2. 레이아웃매니저에 배치

3. 컨테이너에 넣어 표시


화면 객체 생성 순서

1. 윈도우에 해당하는 컨테이너를 생성한다.

2. 레이아웃매니저 객체 생성

3. 스윙 컴포넌트 생성 후 배치

3. 컨테이너

개요

자바에서 컨테이너는 창(window) 역할을 한다.

GUI 프로그램을 만들 때 컴포넌트들을 담을 장소이다.

즉, JFrame의 컨테이너에 JRootPane이란 하나의 컴포넌트만 가지고 여러 컴포넌트들은 이 JRootPane에 추가하여 화면에 나타낸다.

컨테이너가 될 수 있는 컴포넌트는 프레임(JFrame), 애플릿(JApplet) 또는 패널(JPanel)이다.

JFrame과 JApplet는 타이틀 바, 최소화/최대화 버튼과 닫기 버튼을 가진 윈도 구조를 가지며 최종 컨테이너로 사용된다.

JPanel는 투명한 형태의 윈도우로 중간 컨테이너로 사용된다.

즉, 컴포넌트들을 JPanel에 추가하고 이 JPanel을 JFrame이나 JApplet에 추가하게 된다.


예제

중간 컨테이너를 최종 컨테이너에 추가하는 방법

Container myCotainer = getContentPane(); // 최종 컨테이너

JPanel panel1 = new JPanel(); // 중간 컨테이너 패널

JLabel label1 = new JLabel("ID"); // 컴포넌트

JTextField id = new JTextField(bean); // 컴포넌트 panel1.add(label1);

panel1.add(id);

myCotainer.add(panel1);


클래스를 통째로 컨테이너에 추가하는 방법

public class UIComponet extends JPanel {

}


public class UIFrame extends JFrame {

public UIFrame() {

Container myCotainer = getContentPane();

UIComponet uic1 = new UIComponet();

myCotainer.add(uic1);

}

}

▶ JFrame

데스크 탑용 GUI 프로그램을 작성하려면 컨테이너로 JFrame을 사용한다.

데스크 탑 어플 동작을 위해 main() 메소드를 가진다.

GUI 프로그램에서는 일반적 자바 프로그램과 달리 컴포넌트 객체의 생성과 배치를 할 때 사용한다.

import Javax.swing.JFrame;


public class MyGUI extends JFrame

{

public MyGUI {} // 컴포넌트 객체의 생성과 배치

}


창의 표시와 크기 설정

setSize(600, 500); // 가로 600, 세로 500인 창

setVisible(true); // 화면에 프레임 창을 표시


창의 닫기 버튼을 활성화하려면 이벤트 처리나 setDefaultCloseOperation (EXIT_ON_CLOSE)메소드를 호출한다.

이벤트 처리의 예

window.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});


반응형
Comments