본문 바로가기

IT&코딩/Java

Java - 18일차 (AWT)

728x90
반응형

■ AWT의 기본 개념

 

AWT(Abstract Window Toolkit)는 GUI 프로그래밍을 제작하기 위해 자바에서 제공하는 라이브러리를 모아놓은 것이다.

 

AWT는 모든 GUI 프로그램에 사용되는 컴포넌트 및 툴킷을 제공하고 있으며 향후에는 JFC와 같은 스윙(Swing) 및 Java2D의 모태가 되는 개념이다.

 

AWT는 운영체제에 구해받지 않고 쓸 수 있도록 운영체제의 것을 그대로 사용하지 않고 공통적이고 기본적인 컴포넌트들을 추상화시켜 제공한다.

 

실행되는 운영체제에 따라 다르게 보이거나 동작 방식에 차이가 있을 수 있다. 이러한 단점을 극복하기 위해 개발된 것이 JFC(Java Foundation Classes)이다.

 

■ java.awt package 구조

 

 

■ Container 

 

자신의 영역에 컴포넌트를 포함시키고 관리하는 역할을 하며 컨테이너가 다른 컨테이너를 포함할 수도 있다. 컴포넌트도 또한 컨테이너에 부착시키지 않으면 독자적으로 화면에 출력될 수가 없고 반드시 컨테이너에 부착을 시켜야만 화면에 출력이 될 수 있다.

 

컨테이너의 종류에는 Frame, Window, Panel, Applet, Dialog, FileDialog, ScrollPane이 있다.

 

컨테이너에 컴포넌트를 부착시키기 위해 add() 메소드를 사용한다.

 

 

■ AWT 작성방법

 

1단계 : import java.awt.*;

2단계 : extends Frame or Frame 객체 생성

3단계 : Frame 크기 설정 - setSize(int width, int height) or pack()

4단계 : Frame 표시 - setVisible(boolean visible)

 

■ Frame Class

 

Window 클래스의 하위 클래스로 일반적인 응용프로그램에서 윈도우를 생성하기 위해 사용되는 클래스이다.

 

Frame 클래스의 상위 클래스인 Window 클래스는 타이틀, 메뉴 등이 지원되지 않기 때문에 일반적으로 사용하지 않고 Frame 클래스를 사용한다.

 

Frame 클래스는 기본적으로 경계선(Border), 타이틀, 메뉴, 시스템상자(최소화, 최대화, 종료 버튼) 등의 기능을 제공한다.

 

Frame은 다른 윈도우에 속해 있지 않은 윈도우로 최상위 레벨 윈도우라 한다.

 

setSize(), setBounds() 메소드 등을 이용해서 Window의 크기를 설정한 후 setVisible(), show() 메소드를 통해서 화면에 출력시킬 수 있다.

 

■ Frame의 생성자

 

 

■ Frame의 메소드

 

■ Frame의 생성방법 첫 번째 (객체 발생)

 

 

■ Frame의 생성방법 두 번째 (상속)

 

 

■ LayoutManager

 

컨테이너는 자기 자신의 컴포넌트를 붙일 때 어디에, 어떤 방식으로 배치하여 붙일 것인가를 이미 결정하고 있다. 즉, 미리 정해진 레이아웃에 따라 컴포넌트들을 자동으로 배치하는 기능을 가지고 있는 객체를 컨테이너들은 가지고 있는데 이것을 배치관리자(LayoutManager)라 한다.

 

자바에서 사용하는 배치관리자는 NullLayout, FlowLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout의 6가지가 있다.

 

배치관리자는 각자 다른 방식으로 배치기능을 가지고 있으며 컨테이너는 기본적으로 하나의 배치관리자를 가지고 있다.

 

사용자가 임의로 배치관리자는 다시 설정할 수 있으며 배치관리자를 제거하고 수동으로 좌표를 이용해서 배치할 수도 있다.

 

□ NullLayout

 

1. 기능 

 

- Layout 관리자를 없앤 것이므로 Null Layout이라고 불린다.

- 각 component의 크기와 위치를 프로그래머가 좌표로 구현한다.

 

2. 설정방법 : container.setLayout(null);

 

3. component의 위치와 크기 설정

 

- component.setBounds(x, y, width, hight);

- container.add(component);

 

4. 특성 : container의 크기가 변해도 각 component는 제자리에 같은 크기로 존재

 

□ BorderLayout

 

1. 기능 : container 영역을 동, 서, 남, 북 그리고 중앙으로 분할

 

2. 설정방법 : container.setLayout(new BorderLayout());

 

3. component의 위치와 크기 설정

 

- container.add("위치key", component);

- 위치 key = "East", "West", "South", "North", "Center"

 

4. 특성 : frame의 크기가 변하면 Layout 관리자가 각 componenet를 Container의 size에 따라 조정 East, West, South, North가 설정되고, 나머지 영역이 Center 영역이 된다.

 

□ FlowLayout

 

1. 기능 : 설정되는 component의 등록순서대로, 각 component의 최소크기 대로 순서대로 배치됨

 

2. 설정방법 : container.setLayout(new FlowLayout());

 

3. component의 위치와 크기 설정 : container.add(button1);

 

- 각 component의 최소크기는 각 component의 표시내용을 보여줄 수 있는 최소크기로 설정됨

 

4. 특성 : container의 크기를 변경 시 자동으로 위치가 변동됨 

 

□ GridLayout

 

1. 기능 : component가 동일한 크기의 행렬로 grid를 형성하고, 각 grid에 하나씩의 component를 할당

 

2. 설정방법 

 

- Container.setLayout(new java.awt.GridLayout(r, c));

 

3. component의 위치와 크기 설정

 

- component가 동일한 크기로 grid를 형성하고, add한 순서대로 각 component가 배치된다.

- row가 우선 적용된다.

 

4. 특성 : container가 아무리 작아도 각 component의 일부는 보인다.

 

□ GridBagLayout

 

GridLayout과 유사한 기능을 제공하는 배치관리자로 가장 복잡한 구조를 가지고 있다.

GridLayout은 하나의 셀에는 하나의 컴포넌트를 가질 수 있는데 GridBagLayout은 여러 셀에 걸쳐서 서로 다른 크기와 간격으로 하나의 컴포넌트가 배치될 수 있다.

 

GridBagLayout을 사용하는 경우는 GridBagConstraints 클래스를 더 사용하여 배치를 시킨다.

 

GridBagConstraints 클래스는 GridLayout으로 지정된 컨테이너에 컴포넌트가 얼마만큼의 영역을 차지하여 배치할 것인가에 대한 자세한 영역 구조에 대해 지정을 한다.

 

□ CardLayout

 

여러 개의 카드를 쌓아둔 것처럼 컴포넌트를 하나만 보여주는 배치관리자이다.

맨 위의 컴포넌트만 보여주므로 한번에 하나의 컴포넌트만 볼 수 있다.

 

CardLayout에는 맨 위에 위치할 컴포넌트를 지정할 수 있는 메소드가 지원되며, 또한 그 다음에 나올 컴포넌트를 이동시킬 수 있는 메소드를 지원한다.

 

□ Layout 혼합 (Panel)

 

1. 기능 : Null Layout, BorderLayout, GridLayout, FlowLayout 등을 혼합해서 다양한 디자인을 한다.

 

2. 설정방법 

- container인 Panel을 이용한다.

- Panel에 여러 개의 component를 등록하고, 이 패널을 container의 Layout에 등록

 

3. 특성

 

- Panel은 component를 등록할 수 있는 container이다.

- Panel에도 모든 Layout 관리자를 등록할 수 있다.

- Panel은 default Layout이 FlowLayout이다.

- Panel은 여러 개를 등록할 수 있다.

 

□ 컨테이너의 기본 배치 관리자

 

 


 

■ Component

 

모든 컴포넌트들의 super 클래스로서 GUI 프로그램을 구성하는 구성단위로 각 컴포넌트들에서 공통으로 사용되어지는 메소드들을 가지고 있다.

 

□ Component Class의 크기 및 위치 관련 메소드

 

 

□ Component Class의 색상 및 폰트 관련 메소드

 

 

□ Component Class의 설정 관련 메소드

 

 

■ Label Class

 

사각형의 영역에 문자열을 표시할 때 사용하는 컴포넌트이다.

 

레이블은 경계선이 없고 특별한 상태를 가지지도 않는다. 그러므로 레이블을 컨테이너에 포함시키면 레이블의 문자만 화면에 표시가 된다.

 

레이블의 문자열은 좌, 우, 중앙으로 정렬시킬 수 있다.

 

□ 생성자

 

 

□ 주요 메소드

 

 

□ Label 활용 예제

 

 

□ BorderLayout 활용 예제

 

 

■ Button Class

 

버튼을 사용자가 눌렀을 때 특정한 액션을 실행할 수 있도록 만든 컴포넌트이다.

 

□ 생성자

 

 

□ 주요 메소드

 

 

□ Button 활용 예제

 

 

■ TextComponent : TextField, TextArea

 

텍스트를 다루는 클래스의 super 클래스로 텍스트를 처리하는 각종 메소드를 가지고 있다. 독립적으로는 생성되지 못한다.

 

□ 텍스트 편집과 관련된 주요 메소드

 

 

□ 텍스트 선택과 관련된 주요 메소드

 

 

1. TextField

 

한 줄 내의 텍스트를 입력 받거나 편집할 수 있는 컴포넌트이다.

한 줄에 표시할 수 있는 컬럼수를 지정할 수 있고 반향 문자 (Echo Chracter)를 지정하면 입력되는 문자대신 반향 문자로 지정한 문자로 출력된다.

 

* 생성자

 

 

* 주요 메소드

 

 

2. TextArea

 

여러 줄의 텍스트를 사용자로부터 입력받거나 편집할 수 있는 컴포넌트이다.

화면에 출력되는 영역이 벗어나면 스크롤바 표시 방식에 따라 자동으로 스크롤바가 생성된다. 사용자가 필요에 따라 일부 스크롤바만 나타나게 할 수도 있다.

 

* 생성자

 

 

* 주요 메소드

 

 

□ TextFireld, TextArea 활용 예제

 

 

■ List Class

 

여러 개의 항목을 보여주고 사용자가 하나 또는 여러 개의 항목을 선택할 수 있도록 지원하는 컴포넌트이다.

 

기본적으로는 하나의 항목만을 선택할 수 있지만 MultipleMode를 설정하면 한번에 여러 개의 항목을 선택할 수 있다.

 

□ 주요 생성자

 

 

□ 주요 메소드

 

 

□ List 활용 예제

 

 

■ Choice Class

 

드롭 - 다운 버튼을 사용하여 여러 아이템 중에 하나를 선택할 수 있는 기능을 제공한다.

컴포넌트를 생성한 후에 드롭 - 다운 리스트에 항목에 추가시켜 사용한다.

생성자 : Choice ch = new Choive()

 

□ 주요 메소드

 

 

□ Choice 활용 예제

 

 

■ Checkbox

 

사용자가 여러 종류의 옵션을 선택할 것인지의 여부를 지정할 때 사용 한다.

 

여러 개의 체크박스를 묶어 하나의 그룹으로 만들어 그룹내에서는 하나만이 값을 유지할 수 있는 라디오 버튼 형태로도 사용할 수 있는 컴포넌트이다.

 

그룹으로 묶을 때는 CheckboxGroup 클래스를 사용한다.

 

□ 생성자

 

 

□ 주요 메소드

 

 

□ Checkbox 활용 예제

 

 

■ CheckboxGroup Class

 

□ 생성자 : CheckboxGroup()

 

□ 주요 메소드

 

Checkbox getSelectedCheckbox()

void setSelectedCheckbox(Checkbox box)

String toString()

 

□ 사용

 

CheckboxGroup ckgrp = new CheckboxGroup();

Checkbox chbx1 = new Checkbox("red", ckgrp, true);

Checkbox chbx2 = new Checkbox("blue", ckgrp, false);

 

CheckboxGroup 활용 예제

 

 

■ 메뉴 Component

 

메뉴는 보통 최상위 레벨의 윈도우 타이틀바 아래에 존재하는 것으로 사용자가 프로그램의 기능을 선택할 수 있도록 해주는 기능을 가지고 있는 컴포넌트이다.

 

메뉴의 구성은 MenuBar, Menu, MenuItem으로 구성된다.

 

□ 메뉴 Component의 하위 클래스

 

 

□ 메뉴 사용법

 

1. 메뉴바 객체를 생성한다

- MenuBar mb = new MenuBar();

 

2. 메뉴바에 삽입할 메뉴를 생성한 후 메뉴를 메뉴바에 붙인다.

- Menu menu_file = new Menu("파일");

- mb.add(menu_file);

 

3. 메뉴에 붙일 메뉴아이템을 생성한 후 해당 메뉴에 붙인다.

- MenuItem menu_file_new = new MenuItem("새문서");

- Menu_file.add(menu_file_new);

 

4. 메뉴바를 윈도우에 붙인다.

- setMenuBar(mb);

 

■ Panel 클래스

 

컴포넌트들을 그룹별로 묶어서 처리할 때 주로 사용한다.

 

Frame에 컴포넌트를 직접 붙이지 않고 Panel에 그룹별로 붙이고, 다시 Panel을 Frame에 붙이는 경우가 많다.

 

다른 Panel을 생성하여 자신에게 붙일 수도 있어 윈도우 프로그램을 만들 때는 여러 개의 Panel을 사용하는 경우가 많다.

 

□ 생성자

 

 

□ 주요 메소드

 

 

□ 메뉴와 패널 활용 예제

 

 

■ Dialog 클래스

 

메인 윈도우 외에 메시지를 출력하거나, 사용자로부터 데이터를 입력받을 때 주로 사용하는 컨테이너이다.

보통은 Dialog 클래스로부터 상속을 받아 새로운 기능을 가진 대화상자를 만드는 데 사용한다.

 

□ 생성자

 

 

□ 다이얼로그 활용 예제

 

 

■ FileDialog Class

 

사용자가 파일을 선택할 수 있도록 하는 파일선택창

modal dialog이다.

 

□ 생성자

 

 

□ Mode : LOAD, SAVE

 

□ FileDialog 활용 예제

 

 

■ 기타 - 창을 종료하는 세 가지 방식(?)

 

□ 1번

 

 

□ 2번 

 

 

□ 3번 방식

 

728x90
반응형

'IT&코딩 > Java' 카테고리의 다른 글

Java - 20일차 (Java Network) - X  (0) 2022.11.09
Java - 19일차 (Thread) - X  (0) 2022.11.09
Java - 17일차 (Java IO - File)  (0) 2022.11.03
Java - 16일차 (Event) - X  (0) 2022.11.03
Java - 15일차 (컬렉션과 제네릭)  (0) 2022.11.03