반응형

AWT는 자바 GUI의 시조새입니다.

 

GUI에 대하여 쓴 포스팅을 분리했습니다. GUI 개념 설명입니다.

 

https://digiconfactory.tistory.com/56

 

인터페이스는 무엇인가? GUI와 CUI와 UX와 UI

*자바의 AWT관련 포스팅을 하다 GUI 설명이 길어져 분리한 포스트입니다. GUI가 좀 낡은 개념 같기도 한데, 요새는 UX UI 라는 말을 더 많이 하죠. 과거에 컴퓨터를 한다는 말은 GUI를 사용한다는 말과

digiconfactory.tistory.com

* AWT(Abstract Window Toolkit) 란?

 

에이더블류티(추상 윈도우 도구) 라고 한다. AWT는 윈도우창을 만드는 프레임워크이다. 90년대 개발되었으니까 아주 오래 되었다. 독자적인 디자인이 아니라 윈도우, 매킨토시 등 운영체제에 따라 다른 모습으로 보인다. OS의 서브루틴(API)를 호출하기 때문에 모양이 다르다.(different look and feel) 플랫폼에 의존적이고 무거운 특성을 갖고 있다. 텍스트박스 하나를 만드는데도 OS에게 요청을 해야된다.

 

 지금은 AWT와 달리 플랫폼에 독립적이고 가벼운 Swing이 많이 사용된다. 클래스 관계도에서는 Swing은 AWT를 계승하였다. Swing은 기능이 더 좋고 유연한 컴포넌트이다. 최근에는 JAVAFX가 Swing을 이을 후속 프레임워크로 개발되었는데 커뮤니티를 보면 활발하지가 않다. 최근의 사용자들은 거의 웹과 모바일에서 머무르기 때문에, 예전처럼 피씨에 진득하게 앉아서 사용하는 GUI들에 투자하는 기업들이 많지 않은 것 같다.

 

어쨋든 AWT를 공부하는 이유는 한가지다. 자바를 더 깊이 있게 알고 싶어서이다. AWT는 JDK 에 포함되 있기 때문에 소스코드에서 바로 import 해서 사용할 수 있다.

 

*항상 java api를 참고한다는 생각으로 하자 (java.awt 패키지)

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

 

java.awt (Java Platform SE 8 )

Interface Summary  Interface Description ActiveEvent An interface for events that know how to dispatch themselves. Adjustable The interface for objects which have an adjustable numeric value contained within a bounded range of values. Composite The Compos

docs.oracle.com

 

awt 계보도는 Object로부터 Window클래스까지 상속을 받았다. awt의 Frame을 상속하는 JFrame은 Swing의 클래스다.

 

awt 계보도

 

 

윈도우창을 만들기 위해서 Frame 클래스를 사용할 것이다. Frame 클래스에 Button 이나 Label 같은 컴포넌트를 붙이는 구조로 되어있다. 이렇게 보면 잘 모르겠지만 윈도우가 구현되는 것을 보면 쉽게 알것이다.

 

Awt에서는 여러가지 방법으로 윈도우를 만들 수 있다. 결과물은 같지만 과정이 다를 수 있다.

 

<예제1>

import java.awt.Frame;

public class AwtEx {
	public static void main(String[] args) {
		
		Frame 프레임1 = new Frame();
		
		프레임1.setTitle("프레임 예제");
		프레임1.setSize(300,300);
		프레임1.setVisible(true);
	}

}

*한글 변수를 사용했다. 우선 외부클래스인 java.awt 패키지의 Frame 클래스를 import한다. JDK 에 포함되어 있어서 별도로 다운로드 받을 필요는 없다. 메인 함수가 시작되고 Frame 클래스의 인스턴스를 생성한다. 생성자에 매개변수는 없어도 된다.

 

프레임1 이라는 참조변수를 사용한다. (한글도 컴파일 된다) setTitle 메서드는 타이틀에 문자열을 설정한다. setSize는 윈도우의 크기다. 가로 x 세로가 300 x 300 (픽셀) 이다. setVisible을 하기전에 윈도우는 나타나지 않는다. setVisible로 모니터에 윈도우를 그려준다.

AWT Frame

 

첫번째 예제는 패키지를 불러와서 Frame 의 인스턴스를 생성했다.

 

<예제2>

 

import java.awt.Frame;
public class AwtEx2 extends Frame{
	
	AwtEx2(){
		this.setTitle("프레임 예제");
		this.setSize(350,350);
		this.setVisible(true);
        }

	public static void main(String[] args) {
		AwtEx2 ae1 = new AwtEx2();
	}
}

*Frame 클래스를 상속하며 시작한다. 생성자에서 this 키워드로 상속받은 메서드들을 사용할 수 있다. (this를 넣지 않아도 된다. 여기서는 설명을 위해 명시) 이 클래스에서는 보이지 않지만 extends로 상속하면 사용할 수 있는 변수와 메서드들이 생긴다. 어디서 찾아봐야 할 지 모르니까 헤멜수있다. java api에서 클래스를 검색하면 나오니까 설명서라고 생각하고 사용법을 잘 봐야한다.

 

https://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html

 

Frame (Java Platform SE 8 )

A Frame is a top-level window with a title and a border. The size of the frame includes any area designated for the border. The dimensions of the border area may be obtained using the getInsets method, however, since these dimensions are platform-dependent

docs.oracle.com

코드는 다르지만 결과는 예제 1번과 똑같다. 자바는 OOP 프로그래밍이므로 보통은 상속하는 방법으로 코드를 작성한다.

 

주의할 점은 아직 이벤트처리기를 만들지 않아서 윈도우창이 종료가 되지않는다. (자동이 아니라 구현해 줘야 한다.) 이클립스 콘솔창의 terminate (빨간 네모) 를 누르면 강제종료가 된다.

 

dispose()

다음 포스팅에는 버튼,텍스트필드 등을 다는 내용을 다룰 것이다.

 

 

 

*참고 링크

https://beginnersbook.com/2015/06/java-awt-tutorial/

 

Java AWT tutorial for beginners

AWT stands for Abstract Window Toolkit. It is a platform dependent API for creating Graphical User Interface (GUI) for java programs. Why AWT is platform

beginnersbook.com

https://www.javatpoint.com/java-awt

 

Java AWT Tutorial - javatpoint

Java AWT API Tutorial with Button, TextField, Useful method of component class, simple example of awt by inheritance, TextArea, RadioButton, List, CheckBox, Menu, MenuItem, MenuBar classes and details of java.awt package.

www.javatpoint.com

 

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드

  1. 유용한 글 매우 잘 보고 갑니다
    2020.11.26 02:12