자바 GUI AWT vs Swing

|

자바에서 사용 가능한 GUI 객체는 AWT와 스윙이 있다.

  1. AWT (Abstract Window Toolkit)
    • 자바 초기 버전에 제공되던 GUI
    • AWT의 컴포넌트들은 중량 컴포넌트(heavy weigt component)라고도 불린다.
    • 이 컴포넌트들은 OS의 도움을 받아 화면에 출력된다. -> 운영체제의 자원을 많이 소모하여 운영체제에 부담을 준다. -> 구동되는 os 환경에 따라 다른 모습을 보여준다.
  2. 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들을 올려야 한다. 반대로 하면 컴포넌트들이 컨테이너에 가려서 보이지 않음!

참고

-자바(Java)의 기초 박살내기 -AWT vs 스윙 (Swing)

Comments