자바 GUI AWT vs Swing
18 Mar 2020 | java GUI자바에서 사용 가능한 GUI 객체는 AWT와 스윙이 있다.
- AWT (Abstract Window Toolkit)
- 자바 초기 버전에 제공되던 GUI
- AWT의 컴포넌트들은 중량 컴포넌트(heavy weigt component)라고도 불린다.
- 이 컴포넌트들은 OS의 도움을 받아 화면에 출력된다. -> 운영체제의 자원을 많이 소모하여 운영체제에 부담을 준다. -> 구동되는 os 환경에 따라 다른 모습을 보여준다.
- Swing
- AWT를 기반으로 작성된 자바 라이브러리
- 순수하게 자바 언어로 작성되었다.
- 모든 AWT 기능 + 추가된 풍부하고 화려한 고급 컴포넌트
- Swing 컴포넌트는 경량 컴포넌트(light weight component)라고도 불린다.
- OS와 관계없이 항상 동일하게 작동하며 동일한 모양으로 그려진다.
- AWT 컴포넌트를 모두 스윙으로 재작성, AWT 컴포넌트 이름 앞에 J자를 붙인다.
일반적으로 다양하고 모양이 예쁜 스윙 컴포넌트를 AWT보다 더 많이 사용한다.
컨테이너와 컴포넌트
컨테이너
프로그램의 창의 역할 다른 컴포넌트를 포함할 수 있는 특별한 GUI 컴포넌트 java.awt.Container 클래스를 상속받는다. 다른 컨테이너에 포함될 수 있다.
- AWT 컨테이너 컴포넌트 : Frame, Panel, Applet, Dialog, Window
- 스윙 컨테이너 컴포넌트 : JFrame, JPanel, JApplet, JDialog, JWindow
- 최상위 컨테이너 (Top Level Container)
- 컨테이너 중에서 다른 컨테이너에 속하지 않고도 독립적으로 존재하여 출력될 수 있는 컨테이너
- JFrame, JApplet, JDialog 등
컴포넌트
실제로 Container 위에 올라가 화면 구성을 담당 다른 컴포넌트를 포함할 수 없으며, 임의의 컨테이너에 포함되어야 비로소 화면에 출력될 수 있는 GUI 객체들
대부분의 Swing의 컴포넌트들은 javax.swing.JComponent 클래스의 상속을 받는다.
반드시 Container를 제일 밑에 깔고 그 위에 Component들을 올려야 한다. 반대로 하면 컴포넌트들이 컨테이너에 가려서 보이지 않음!
Comments