JAVA

[JAVA] GUI(AWT)

HJLIM 2020. 9. 16. 22:23

GUI Progamming이란?

-GUI는 과거에 사용하였던 DOS(CUI)와 같은 방식의 Text기반 OS가 아닌 Graphic을 이용하여

User와 Program간의 상호작용을 할 수 있도록 해주는 Interface를 의미한다.

JAVA에서 이러한 Graphic Programmig을 지원하기 위해 나온 것이 바로 AWT이다.

 

 

AWT의 기본 개념

-AWT(Abstract Window Toolkit)은 GUI Programming을 제작하기 위해 자바에서 제공하는 Library을 모아놓은 것이다.

AWT는 모든 GUI Program에 사용되는 Component 및 Toolkit을 제공하고 있으며 향후에는 JFC와 같은 Swing 및 JAVA 2D 의 모태가 되는 개념이다.

AWT는 OS에 구애받지 않고 쓸 수 있도록 OS의 것을 그대로 사용하지 않고 공통적이고 기본적인 Component들을 추상화시켜 제공한다.

 

 

https://docs.oracle.com/javase/8/docs/api/java/awt/package-frame.html

 

java.awt (Java Platform SE 8 )

 

docs.oracle.com

이 곳에 들어가면 자바 사용할 수 있는 Interface나 class가 있는데 클릭해서 들어가보면 사용 방법이 자세하게 나와있다.

 

 

 

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class GuiEx extends Frame{
	public GuiEx(){
		//패널
		Panel p = new Panel();
		//버튼
		Button b = new Button("버튼");
		b.setLabel("변경된 라벨");
		//체크 박스
		Checkbox ch1 = new Checkbox("체크 박스", true);
		Checkbox ch2 = new Checkbox("체크 박스", false);
		Checkbox ch3 = new Checkbox("체크 박스", false);
		//체크 박스(라디오 버튼)
		CheckboxGroup ch = new CheckboxGroup();
		Checkbox ch4 = new Checkbox("라디오 버튼", true, ch);
		Checkbox ch5 = new Checkbox("라디오 버튼", false, ch);
		Checkbox ch6 = new Checkbox("라디오 버튼", false, ch);
		//초이스(콤보 박스)
		Choice cho = new Choice();
		cho.add("학년 선택");
		cho.add("1학년");
		cho.add("2학년");
		cho.add("3학년");
		cho.add("4학년");
		
		//라벨, 리스트
		Label la = new Label("자바 수강생");
		List ls = new List(5);
		ls.add("List 1");
		ls.add("List 2");
		ls.add("List 3");
		ls.add("List 4");
		ls.add("List 5");
		ls.add("List 6");

		//스크롤바 HORIZONTAL
		Scrollbar sb = new Scrollbar(Scrollbar.HORIZONTAL, 200, 100, 0 ,255);
		//스크롤바 VERTICAL
		Scrollbar sb2 = new Scrollbar(1, 200, 100, 0 ,255);
		//텍스트필드(한 문장)
		TextField tf = new TextField("TextField",50);
		//텍스트 에어리어(여러 문장)
		TextArea ta = new TextArea("TextArea",20, 10, 0);
		//생성한 객체들을 panel에 붙이기
		p.add(ch1);
		p.add(ch2);
		p.add(ch3);
		p.add(cho);
		p.add(ch4);
		p.add(ch5);
		p.add(ch6);
		p.add(b);
		p.add(la);
		p.add(ls);
		p.add(sb);
		p.add(sb2);
		p.add(tf);
		p.add(ta);
		//프레임에 붙이기 (this. 이 생략 되어있음)
		add(p);

		//컨테이너
		setSize(500, 500);
		setVisible(true);
		
		//닫기(종료)
		addWindowListener(new WindowAdapter() { //모바일에서 많이 사용(내부 익명)
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	
	
	}

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

각종 컴포넌트들을 예로 사용한 결과이다.

 

컴포넌트란(ex. Button, Checkbox, TextField 등등)을 말하는데 컴포넌트는 Panel(패널)에 담아 원하는 위치에 집어 넣을 수 있다. 컴포넌트들을 집어 넣은 패널은 또 다시 최상위 컨테이너인 Frame(프레임)에 넣어 배치할 수 있다.

 

하지만, 컴포넌트는 컨테이너(프레임)역할을 할 수 없다. (컨테이너는 컴포넌트 역할을 할 수 있음)