자바에서의 GUI 프로그래밍 기법을 익히고 제작해 본다.
AWT의 기본 개념 및 구조를 알아본다.
자바에서 제공하는 컴포넌트 및 배치 관리자에 대해 알아본다.
1. GUI 프로그래밍이란
GUI는 과거에 사용하였던 DOS(CUI방식)와 같은 방식의 텍스트 기반 운영체제가 아닌 그래픽을 이용하여 사용자와 프로그램 간의 상호작용을 할 수 있도록 해주는 인터페이스를 의미한다. 자바에서 이러한 그래픽 프로그래밍을 지원하기 위해 나온 것이 바로 AWT인 것이다.
2. AWT의 기본 개념
AWT(Abstract Window Toolkit)는 GUI 프로그래밍을 제작하기 위해 자바에서 제공하는 라이브러리를 모아놓은 것이다.
AWT는 모든 GUI 프로그램에 사용되는 컴포넌트 및 툴킷을 제공하고 있으며 향후에는 JFC와 같은 스윙(Swing) 및 Java 2D의 모태가 되는 개념이다.
AWT는 운영체제에 구해받지 않고 쓸 수 있도록 운영체제의 것을 그대로 사용하지 않고 공통적이고 기본적인 컴포넌트들을 추상화시켜 제공한다.
실행되는 운영체제에 따라 다르게 보이거나 동작 방식에 차이가 있을 수 있다.
이러한 단점을 극복하기 위해 개발된 것이 JFC(Java Foundation Classes)이다.

3. Container
자신의 영역에 컴포넌트를 포함시키고 관리하는 역할을 하며 컨테이너가 다른 컨테이너를 포함할 수도 있다.
컴포넌트도 또한 컨테이너에 부착시키지 않으면 독자적으로 화면에 출력될 수가 없고 반드시 컨테이너에 부착을 시켜야만 화면에 출력이 될 수 있다.
컨테이너의 종류에는 Frame, Window, Panel, Applet, Dialog, FileDialog, ScrollPane이 있다.
컨테이너에 컴포넌트를 부착시키기 위해 add() 메서드를 사용한다.

4. Frame
Window 클래스의 하위 클래스로 일반적인 응용프로그램에서 윈도우를 생성하기 위해 사용되는 클래스이다.
Frame 클래스의 상위 클래스인Window 클래스는 타이틀, 메뉴 등이 지원되지 않기 때문에 일반적으로 사용하지 않고 Frame 클래스를 사용한다.
Frame 클래스는 기본적으로 경계선(Border), 타이틀, 메뉴, 시스템상자(최소화, 최대화, 종료 버튼) 등의 기능을 제공한다.
Frame은 다른 윈도우에 속해 있지 않은 윈도우로 최상위 레벨 윈도우라 한다.
setSize(), setBounds()메서드 등을 이용해서 Window의 크기를 설정한 후 setVisible(), show()메서드를 통해서 화면에 출력시킬 수 있다.
Frame 클래스의 생성자
생성자 | 설명 |
Frame( ) | 가장 일반적인 생성자로 타이틀이 빈 상태로 생성한다. |
Frame(GraphicsConfiguration gc) | 화면 장치의 GraphicsConfiguration을 이용하여 프레임을 생성한다. |
Frame(String title) | Title(윈도우의 타이틀 바에 나타낼 문자열)을 지정하여 프레임을ㅇ 생성한다. |
Frame(String title, GraphicsConfiguration gc) | Title(윈도우의 타이틀 바에 나타밸 문자열)과 GraphicsConfiguration 을 이용하여 프레임을 생성한다. |
Frame 클래스의 주요메서드
반환형 | 메소드 | 설명 |
int | getExtendedState( ) | 프레임의 상태를 얻어온다 |
static Frame[ ] | getFrames( ) | 애플리케이션에서 생성한 모든 프레임을 리턴한다. |
int | getState( ) | 프레임의 상태를 얻어온다 |
String | getTitle( ) | 프레임의 타이틀을 얻어온다 |
voide | remove(MenuComponet m) | 프레임에서 지정한 메뉴바를 제거한다 |
setIconImage(Image image) | 프레임이 최소화될 때 출력되는 이미지를 지정한다 | |
setMenuBar(MenuBar mb) | 프레임의 메뉴바를 지정한다 | |
setResizable(boolean resizable) | 프레임의 크기를 사용자가 변경할 수 있게 할 것인지를 지정한다. | |
setState(int state) | 프레임의 상태를 지정한다 | |
setTitle(String title) | 프레임의 타이틀을 지정한다 |
5. Panel 클래스
컴포넌트들을 그룹별로 묶어서 처리할 때 주로 사용한다.
Frame에 컴포넌트를 직접 붙이지 않고 Panel에 그룹별로 붙이고, 다시 Panel을 Frame에 붙이는 경우가 많다.
다른 Panel을 생성하여 자신에게 붙일 수도 있어 윈도우 프로그램을 만들때는 여러 개의 Panel을 사용하는 경우가 많다.
Panel 클래스의 주요 생성자
생성자 | 설명 |
Panel( ) | 디폴트의 레이아웃 매니저를 사용해 새로운 패널을 작성한다 |
Panel(LayoutManager layout) | 지정된 레이아웃 매니저를 가지는 새로운 패널을 작성한다 |
Panel 클래스의 주요 메서드
반환형 | 메서드 | 설명 |
void | addNotify( ) | 패널의 피어를 작성한다 |
AccessibleContext | getAccessibleContext( ) | Panel에 관련한 AccessibleContext를 얻어온다. |
6. Dialog 클래스
메인 윈도우 외에 메시지를 출력하거나, 사용자로부터 데이터를 입력받을 때 주로 사용하는 컨테이너이다.
보통은 Dialog 클래스로부터 상속을 받아 새로운 기능을 가진 대화 상자를 만드는 데 사용된다.
Dialog 클래스의 생성자
생성자 | 설명 |
Dialog(Dialog owner) | 생성되는 Dialog 객체를 소유하는 객체가 owner인 Frame을 생성한다 |
Dialog(Dialog owner, String title) | 생성되는 Dialog 객체의 소유자를 owner라는 객체로 설정하고 타이틀을 설정한다. |
Dialog(Dialog owner, String title, boolean modal) | 소유자로 owner 객체를 설정하고 타이틀을 가지며, 모덜일지 모덜이 아닌지를 설정하여 Dialog 객체를 생성한다. |
Dialog(Frame owner) | 생성되는 Dialog객체를 소유하는 객체가 owner라는 Frame 객체를 생성한다 |
Dialog 클래스의 주요 메서드
메서드 | 반환형 | 설명 |
void | addNotify( ) | 패널의 피어를 작성한다 |
AccessibleContext | getAccessibleContext( ) | Panel에 관련한 AccessibleContext를 얻어온다. |
7. Component
모든 컴포넌트들의 super 클래스로서 GUI 프로그램을 구성하는 구성단위로 각 컴포넌트들에서 공통으로 사용되는 메서드들을 가지고 있다.
Component 클래스의 크기 및 위치와 관련 있는 주요 메서드
반환형 | 메서드 | 설명 |
int | getX( ) | 컴포넌트의 현재의 X좌표를 얻어온다 |
getY( ) | 컴포넌트의 현재의 Y좌표를 얻어온다 | |
getWidth( ) | 컴포넌트의 현재의 폭을 얻어온다 | |
getHeight( ) | 컴포넌트의 현재의 높이를 얻어온다 | |
Dimension | getSize( ) | 컴포넌트의 크기를 크기 객체(Dimensioned Object)로 얻어온다 |
getMaximumSize( ) | 컴포넌트의 최대 크기를 크기 개체로 얻어온다 | |
getMinimumSize( ) | 컴포넌트의 최소 크기를 크기 객체로 언더온다 | |
Rectangle | getBounds( ) | 컴포넌트의 경계를 직사각형 객체(Rectangle Object)로 얻어온다 |
void | setSize(int width, int height) | 컴포넌트의 폭, 높이를 지정한다. |
setLocation(int x, int y) | 컴포넌트의 새로운 위치를 지정하여 이동시킨다 | |
setBounds(int x, int y, int width, int height) | 컴포넌트의 위치와 크기를 지정한다 | |
setBounds(Rectangle r) | 새로운 경계 Rectangle r에 적합하도록 컴포넌트의 위치와 크기를 지정한다. |
Component 클래스의 색상, 폰트와 관련 있는 주요 메서드
반환형 | 메서드 | 설명 |
Color | getBackground( ) | 컴포넌트의 배경색을 색상 객체(Color Object)로 얻어온다 |
getFroground( ) | 컴포넌트의 전경색을 색상 객체로 얻어온다 | |
void | setBackground( ) | 컴포넌트의 배경색을 Color c로 지정한다 |
setFroground( ) | 컴포넌트의 전경색을 Color c로 지정한다 | |
Font | getFont( ) | 컴포넌트의 글꼴을 글꼴 객체(Font Object)로 얻어온다 |
void | setFont(Font f) | 컴포넌트의 글꼴을 Font f로 지정한다 |
Component 클래스의 설정과 관련 있는 주요 메서드
반환형 | 메서드 | 설명 |
void | setEnabled(Boolean b) | 파라미터 b값에 의해 컴포넌트의 호라성화와 비활성화를 지정한다 |
setVisible(Boolean b) | 파라미터 b값에 의해 컴포넌트를 출력하거나 숨기는 것을 지정한다 | |
String | getName( ) | 컴포넌트의 이름을 얻어온다 |
Contatiner | getParent( ) | 컴포넌트를 소유하고 있는 컨테이너를 얻어온다 |
void | requestFocus( ) | 현 컴포넌트에 포커스를 요청한다 |
기본 Component 종류와 기능
종류 | 프로그래밍 언어 |
Button | 버튼을 만들때 사용한다 |
Canvas | 비어있는 공간으로 그래픽을 처리할 때 사용한다 |
Checkbox | 체크 박스나 라디오 버튼을 만들 때 사용한다 |
Choice | 드롭-다운 리스트를 만들 때 사용한다 |
Lable | 고정 문자열을 표시할 때 사용한다 |
List | 리스트를 만들 때 사용한다 |
Scrollbar | 스크롤바를 만들 때 사용한다 |
'처음배우는 IT' 카테고리의 다른 글
자바프로그래밍 언어: AWT 이벤트 (0) | 2021.01.16 |
---|---|
자바프로그래밍 언어: AWT <2> (0) | 2021.01.12 |
자바프로그래밍 언어: Util패키지의 실무적 클래스들 <2> (0) | 2021.01.10 |
자바프로그래밍 언어: Util패키지의 실무적 클래스들 <1> (0) | 2021.01.08 |
자바프로그래밍 언어: 제네릭과 컬렉션 (0) | 2021.01.07 |