관리 메뉴

IT창고

자바(JAVA) - GUI 프로그램 본문

프로그래밍/JAVA

자바(JAVA) - GUI 프로그램

방구석여포 2017. 9. 11. 01:17


자바의 GUI는 텍스트 기반 운영체제가 아닌 그래픽을 이용하여 사용자와 프로그램간의 상호작용을 할 수 있도록 해주는 인터페이스를 의미합니다. 자바에서 이러한 그래픽 프로그래밍을 지원하기 위해 있는것이 AWT입니다. AWT(Abstract Window Tookot)는 GUI프로그래밍을 제작하기 위해 자바에서 제공하는 라이브러리를 모아놓은 것입니다. AWT는 모든 GUI프로그램에서 사용되는 컴포넌트와 툴킷을 제공하며 JFC와 같은 Swing의 기본개념입니다. AWT는 운영체제와 응용프로그램 사이의 연결 라이브러리로서 실행되는 운영체제에 따라서 다르게 보이거나 동작 방식이 다를수있기에 이러한 단점을 극복하기 위해 개발된 것이 JFC(Java Foundation Class)입니다.  AWT에는 Frame, Panel, Label이 있는데 Frame은 기본적으로 경계선,타이틀,메뉴,최소화,종료 등의 기능을 제공하고 Panel은 그룹별로 묶어 프레임에 붙일수있고 Label은 사격형 영역에 문자열을 표시할때 사용하는 컴포넌트입니다. 


AWT를 기본적으로 구성해 보자면 아래의 소스와 같습니다.

import java.awt.Frame;

import java.awt.Label;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Main {

public static void main(String[] args) {

Frame frame = new Frame("프레임");

Label label =new Label("라벨");

frame.add(label);

frame.setSize(300, 300); 

frame.setVisible(true);

frame.addWindowListener(new WindowAdapter() {  //창을 닫을수있습니다.

@Override

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

}

결과

AWT의 기본적인 구성을 확인했다면 레이아웃을 알아보겠습니다.

AWT에는 레이아웃메니저가 있는데 그 중 대표적으로 FlowLayout, GridLayout, BorderLayout 등 이 있습니다.


FlowLayout은 설정한 값에 따라 컴포넌트들이 왼쪽에서 오른쪽, 오른쪽에서 왼쪽, 가운데에서 양쪽 등으로 정렬이 되는 레이아웃입니다. 

FlowLayout 기본구성소스

Frame frame = new Frame("FlowLayout 프레임");

Label label =new Label("라벨");

Label label2 =new Label("라벨2");

Label label3 =new Label("라벨3");

frame.add(label);

frame.add(label2);

frame.add(label3);

FlowLayout fl= new FlowLayout();

fl.setAlignment(FlowLayout.LEFT);

frame.setLayout(fl);

frame.setSize(300, 300);

frame.setVisible(true);

결과

BorderLayout은 컨테이너를 East,West,Center,North,South 5개의 영역으로 나누고 각 영역에 하나의 컴포넌트만 배치할수있는 레이아웃입니다.

BorderLayout 기본구성소스

Frame frame = new Frame("FlowLayout 프레임");

BorderLayout bor =new BorderLayout();

frame.setLayout(bor);

Button b1 = new Button("b1");

Button b2 = new Button("b2");

Button b3 = new Button("b3");

Button b4 = new Button("b4");

Button b5 = new Button("b5");

frame.add("East", b1);

frame.add("West", b2);

frame.add("Center", b3);

frame.add("North", b4);

frame.add("South", b5);

frame.setSize(300, 300);

frame.setVisible(true);

결과

GridLayout은 행과 열을 만들어 컴포넌트들을 컨테이너 위에 순서대로 올리고 컨테이너 크기가 변경되면 컴포넌트들의 위치는 고정하고 크기는 모두 동일한 크기로 변하는 레이아웃입니다.

GridLayout 기본구성소스

Frame frame = new Frame("GridLayout 프레임");

GridLayout gri = new GridLayout(2, 3);

frame.setLayout(gri);

Button b1 = new Button("b1");

Button b2 = new Button("b2");

Button b3 = new Button("b3");

Button b4 = new Button("b4");

Button b5 = new Button("b5");

frame.add(b1);

frame.add(b2);

frame.add(b3);

frame.add(b4);

frame.add(b5);

frame.setSize(300, 300);

frame.setVisible(true);

결과

마지막으로 Panel에 대해 알아보겠습니다.

Panel은 간단하게 레이아웃과 동일하게 생각하면되는데 레이아웃을 올릴때 이 패널을 사용하면 다양하게 레이아웃을 구성해 볼수있습니다.

Panel 기본구성소스

Frame frame = new Frame("GridLayout 프레임 Panel사용");

GridLayout gri = new GridLayout(4, 1);

frame.setLayout(gri);

Panel p1 = new Panel();

p1.setLayout(new GridLayout(1, 2));

Button b1 = new Button("b1");

Button b2 = new Button("b2");

p1.add(b1);

p1.add(b2);

Button b3 = new Button("b3");

Button b4 = new Button("b4");

Button b5 = new Button("b5");

frame.add(p1);

frame.add(b3);

frame.add(b4);

frame.add(b5);

frame.setSize(300, 300);

frame.setVisible(true);

결과

여기까지 자바의 GUI에 대해 알아보았습니다.

Comments