AWT는 자바 GUI의 시조새입니다.
GUI에 대하여 쓴 포스팅을 분리했습니다. GUI 개념 설명입니다.
https://digiconfactory.tistory.com/56
* 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
awt 계보도는 Object로부터 Window클래스까지 상속을 받았다. awt의 Frame을 상속하는 JFrame은 Swing의 클래스다.
윈도우창을 만들기 위해서 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로 모니터에 윈도우를 그려준다.
첫번째 예제는 패키지를 불러와서 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
코드는 다르지만 결과는 예제 1번과 똑같다. 자바는 OOP 프로그래밍이므로 보통은 상속하는 방법으로 코드를 작성한다.
주의할 점은 아직 이벤트처리기를 만들지 않아서 윈도우창이 종료가 되지않는다. (자동이 아니라 구현해 줘야 한다.) 이클립스 콘솔창의 terminate (빨간 네모) 를 누르면 강제종료가 된다.
다음 포스팅에는 버튼,텍스트필드 등을 다는 내용을 다룰 것이다.
*참고 링크
https://beginnersbook.com/2015/06/java-awt-tutorial/
https://www.javatpoint.com/java-awt