[네트워크 프로그래밍2]자바의 GUI (AWT와 SWING)

류명운

·

2015. 8. 26. 18:42

반응형

이번 학기 네트워크 프로그래밍2에서는 처음으로 자바 GUI에 대하여 공부합니다.


(수업시간에 배웠던 내용을 예습하는 의미로 앞으로 포스팅을 꾸준히 진행하도록 하겠습니다~)


GUI는 Graphic User Interface의 약자로 컴퓨터를 사용하면서, 그림으로 된 화면 위의 물체나 틀, 색상과 같은 그래픽 요소들을 어떠한 기능과 용도로 나타내기 위해 고안된 사용자를 위한 컴퓨터 인터페이스 입니다.


한마디로, 좀더 사용자가 해당응용프로그램의 기능 등을 편하게 이용할 수 있는 틀?을 그래픽을 사용하여 제공하는 것을 뜻한다고 생각하시면 됩니다^^


간단히 GUI 목적, 특징, 실제 프로그래밍에 사용되는 패키지에 대하 간단히 알아보자면,


GUI의 목적

  • 그래픽 이용, 사용자에게 이해하기 쉬운 모양으로 정보 제공
  • 사용자는 마우스나 키보드를 이용하여 쉽게 입력


자바 GUI의 특징

  • 강력한 GUI 컴퓨넌트 제공
  • 쉬운 GUI 프로그래밍 (관련 클래스들을 패키지로 개발이되어 제공되므로 가저다 사용만 하시면 됩니다)


자바의 GUI 프로그래밍 방법

  • AWT 패키지(java.awt)와 Swing 패키지(javax.swing)가 사용


스윙 컴포넌트 둘러보기(예시)

 : 아래의 그림을 보면서 대충 이런게 있구나~ 하고 알아가자.

 JApplet

 

 JButton

 

 JCheckBox

 

 JComboBox

 

 JDialog

 

 JEditorPane and JTextPane

 

 JFrame

 

 JList

 

 JPasswordField

 

 JProgressBar

 

 JRadioButton

 

 JScrollPane

 

 JSlider

 

 JSpinner

 

 JSplitPane

 

 JTabbedPane

 

 JTable

 

 JTextArea

 

 JTextField

 

 JToolBar

 

 JToolTip

 

 JTree

 


스윙으로 만든 GUI 프로그램 예


다음으로 AWT와 Swing 패키지의 특징에 대하여 살펴보자.


AWT(Abstract Windowing Toolkit)

  • 자바가 처음 나왔을 때 함께 배포된 GUI 라이브러리

  • GUI 클래스 패키지 - java.awt 패키지

  • Native 운영체제와 응용프로그램 사이의 연결 라이브러리

중량 컴포넌트(Heavy weight components)

 -> AWT 컴포넌트는 native(peer)에 의존적임

 -> OS의 도움을 받아야 화면에 출력되며 동작하는 컴포넌트. 운영체제에 많은 부담. 오히려 처리 속도는 빠름


Swing(스윙)

  • AWT 기술을 기반으로 작성된 자바 라이브러리

모든 AWT 기능 + 추가된 풍부하고 화려한 고급 컴포넌트

AWT 컴포넌트에 J자가 덧붙여진 이름의 클래스

클래스명 J자로 시작

  • 순수한 자바 언어로 구현, JDK 1.1부터 - javax.swing 패키지

  • 스윙 컴포넌트는 2가지 유형

AWT의 Component를 상속받는 클래스(JComponent) : 추상 클래스, 스윙 컴포넌트의 공통적인 속성구현, 인스턴스 생성불가.

AWT의 Container를 상속받는 클래스(JApplet, JDialog, JFrame 등)

  • Swing 컴포넌트는 native(peer)에 의존하지 않음

경량 컴포넌트(Light weight components)


컨테이너와 컴포넌트에 대하여 알아보자!

컨테이너:

 - 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트(java.awt.Container를 상속받아야 함)

 - 컨테이너 객체는 다른 컨테이너에 포함될 수 있는 컴포넌트

     ->AWT컨테이너 : Panel, Frame, Applet, Dialog, Window

     ->Swing컨테이너 : Jpanel JFrame, JApplet, JDialog, JWindow


최상위 컨테이너:

 - 다른 컨테이너에 속하지 않고도 독립적으로 존재하고 화면에 출력이 가능한 컨테이너

    -> JFrame, JDialog, JApplet


컴포넌트:

 - 컨테이너에 포함되어야 비로소 화면에 출력될 수 있는 GUI객체

 - 모든 GUI 컴포넌트의 최상위 클래스(javaawt.Component)

 - 스윙 컴포넌트의 최상위 클래스(javax.swingJComponent)


GUI 라이브러리 계층 구조

GUI의 라이브러리 계층 구조입니다.

보시는 바와 같이 java는 Object가 최상의 루트 라이브러리로 존재하고 있습니다. Object를 기반으로 상속하여 계층적으로 관련 여러 라이브러리가 쓰여지는 것을 알수 있습니다.

이번 포스팅은 여기까지 살펴보고 다음 포스팅엔 실제적으로 Swing을 이용한 코딩을 살펴보도록 하겠습니다 *^^*


좋은하루되세요 !@.@

반응형