• 검색 결과가 없습니다.

AWT 패키지

N/A
N/A
Protected

Academic year: 2022

Share "AWT 패키지"

Copied!
37
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

AWT 패키지

(2)

학습목표



java.awt 패키지를 이해한다



Container 클래스를 이해하고 활용한다.



Window와 Frame 클래스를 이해하고 활용한다.



그래픽 그리기 클래스를 이해하고 활용한다.



비주얼 컴포넌트 클래스를 이해하고 활용한다.



비주얼 컴포넌트 클래스를 이해하고 활용한다.



컨테이너 클래스를 이해하고 활용한다.



컴포넌트의 배치를 이해하고 활용한다.



메뉴를 작성할 수 있다.



GUI 이벤트를 처리할 수 있다.

(3)

Java.awt 패키지(1/3)

 AWT(Abstract Window Toolkit, 추상 윈도우 툴킷)



자바 그래픽 사용자 인터페이스

 GUI 컴포넌트



그래픽 이미지 화면 출력 + 이미지와 상호작용

(4)

Java.awt 패키지(2/3)

GUI 컴포넌트

클래스 기능 GUI

컴포넌트

클래스 기능

레이블 Label 화면에 문자열을 출력 윈도우 Window 기본적인 윈도우 버튼 Button 클릭 가능한 버튼 표시와 마우

스 입력

Frame 제목을 갖는 윈도우

Checkbox 체크박스 - 온/오프 선택 다이얼로그 Dialog 대화상자 형식의 윈도우 Choice 여러 아이템 중 하나 선택 FileDialog 파일 선택을 위한 대화상자 List 여러 아이템 중 하나이상 선택 메뉴 MenuBar 메뉴바

문자열 입력

TextField 문자열을 한 줄 입력하거나 출

Menu 개별 메뉴

TextArea 문자열을 한 줄이상 입력하거나 출력

MenuItem 각 메뉴 항목

그리기 화면

Canvas 그림 그릴 수 있는 화면 제공 컨테이너 Panel 다른 컴포넌트를 포함할 수 있는 컨테이너(단, 독립적으 로 존재할 수 없고 윈도우 필 요)

스크롤바 ScrollBar 스크롤이 가능한 컨트롤 제공 Applet Panel 클래스를 상속하면서 브라우저에서 동작할 수 있도 록 만들어짐

스크롤 화 면

ScrollPan e

스크롤이 가능한 화면 제공

(5)

Java.awt 패키지(3/3)

 대표적인 클래스 및 계층 구조(사각형:비주얼 컴

포넌트 클래스, 사다리꼴:컨테이너클래스)

(6)

Component 클래스(1/2)

 비주얼 컴포넌트와 컨테이너 클래스들의 상위 클 래스로

 컴포넌트의 크기 및 위치를 결정하고, 그림을 그 리고, 배경색 및 전경색, 폰트를 결정하는 등과 리고, 배경색 및 전경색, 폰트를 결정하는 등과 같은 그래픽 처리에 필요한 주요한 메서드 제공

 이 클래스의 하위 클래스인 비주얼 컴포넌트 및

컨테이너 클래스들은 Component 클래스에서

정의한 메서드를 사용할 수 있음

(7)

Component 클래스(2/2)

(8)

Container 클래스



모든 컨테이너 클래스의 상위 클래스로 컴포넌트를 추가 하고 제거하는 등의 메소드를 포함



종류



Window 클래스 – (Frame 클래스, Dialog 클래스-FileDialog 클래스)



Panel 클래스 – Applet 클래스



이 클래스만으로 동작불가능하고, 다른 컴포넌트를 포함



이 클래스만으로 동작불가능하고, 다른 컴포넌트를 포함 해야 의미가 있음

(9)

Window 클래스

 타이틀이나 메뉴가 없는 단순한 윈도우를 제공하 는 클래스

 메서드

(10)

Frame 클래스



Window 클래스의 하위 클래스로 응용 프로그램에서 윈 도우를 생성하여 타이틀이나 메뉴 등을 첨가할 수 있음



생성자



Frame(): 타이틀이 없는 생성자



Frame(String title): 타이틀을 제공하는 생성자



메서드



메서드

(11)

Frame 클래스 예

import java.awt.*;

import java.awt.event.*;

public class MakeFrame extends Frame { public static void main(String[] args) {

Frame frame = new Frame();

frame.setLayout(new FlowLayout());

frame.add(new TextField("TextField: 한줄의 문자열을 표시 또는 입력"));

frame.add(new TextArea("TextArea: 한줄 이상의 문자열을 표시 또는 입력", 8, 40));

frame.add(new Button("Button: 마우스 클릭 입력"));

frame.add(new Label("Label: 화면에 문자열을 표시"));

frame.add(new Label("Label: 화면에 문자열을 표시"));

frame.pack();

frame.setSize(320, 270);

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e){

System.exit(0);

} }

frame.show();

}

}

(12)

Dialog 클래스



팝업(Popup) 윈도우의 형태로 사용자에게 간단한 메시지를 출력하거나, 사용자로부터 입력을 받을 때 사용되는 클래스



Dialog 윈도우 형태

 modal 다이얼로그 윈도우 : 사용자에 의하여 다이얼로그 윈도우(대화창) 가 처리되어야만 프로그램이 진행

 modaless 다이얼로그 윈도우 : 다이얼로그 윈도우가 처리되지 않고도 프로그램이 진행



생성자



생성자

 Dialog(Frame parent): 상위 클래스로서 parent 프레임을 가지는 객체를 생성

 Dialog(Frame parent, boolean flag): 상위 클래스로서 parent 프레임을 가지고, 생성된 객체는 flag가 true이면 modal 객체이고, false이면

modaless 객체를 의미

 Dialog(Frame parent, String title, boolean flag): title를 제목으로 가지 고, 다른 2개의 인자는 앞의 내용과 같은 객체를 생성

(13)

FileDialog 클래스



Dialog 컨테이너에 파일 선택 기능을 포함시켜 만든 Dialog 클래스의 하위 클래스로서, 파일 시스템에 접근하여 파일을 열고 저장할 때 사 용하는 클래스



생성자

 FileDialog(Frame fr): fr 프레임에 부착된 FileDialog 객체를 생성한다 .(오픈모드)

 FileDialog(Frame fr, String title): fr 프레임에 부착되고 title을 제목으

 FileDialog(Frame fr, String title): fr 프레임에 부착되고 title을 제목으 로 가지는 객체를 생성한다.(오픈모드)

 FileDialog(Frame fr, String title, int mode): fr 프레임에 부착되고 title을 제목으로 가지는 객체를 생성한다. Mode가 FileDialog.SAVE 이면 저장모드, FileDialog.LOAD는 오픈모드를 가르킨다

(14)

FileDialog 클래스 예

FileDialogFrame.java

import java.awt.*;

import java.awt.event.*;

public class FileDialogFrame extends Frame {

FileDialog openfile;

public FileDialogFrame(String str){

super(str);

setLayout(new FlowLayout());

openfile = new FileDialog(this, "파일 읽어 드리기", FileDialog.LOAD);

setSize(250, 130);

Frame 클래스로부터 상속받아야 한다.

현재 프레임(this)에 부착된 파일 다이얼로그 객체(openfile)를 생성한다.

setSize(250, 130);

show();

openfile.show();

addWindowListener(new WinListener());

}

public static void main(String args[]){

FileDialogFrame fr = new FileDialogFrame("파일 다이얼로그 예제");

}

class WinListener extends WindowAdapter {

public void windowClosing(WindowEvent we){

System.exit(0);

} } }

프레임 및 파일 다이얼로그(openfile) 컴포넌트를 출력한다.

실행결과

(15)

그래픽 그리기(1/3)

 윈도우에 문자열, 선, 삼각형, 사각형, 원, 원호, 이미지 등을 그릴 수 있는 기능 제공

 Graphics 클래스의 paint() 메서드의 매개변수를 이용

 paint() 메서드 호출 과정

 paint() 메서드 호출 과정

1) 프로그램에서 paint() 메소드를 호출할 부분에

repaint() 메소드를 기술한다.

2) repaint() 메소드는 update() 메소드를 호출한다.

3) 마지막으로 update() 메소드는 paint() 메소드를 호출 하여 실행한다.

(16)

그래픽 그리기(2/3)

(17)

그래픽 그리기(3/3)

DrawString.java

Frame 클래스를 상속받은 DrawString 클래스는 Frame(윈도우) 특성을 가진다.

타이틀이 “출력 프레임”인 Frame 객체를 import java.awt.*;

import java.awt.event.*;

public class DrawString extends Frame {

public DrawString(String s){

super(s);

addWindowListener(new WinListener());

}

public static void main(String args[]){

String str = "출력 프레임";

Frame 객체(윈도우)를 생성한다.

타이틀이 “출력 프레임”인 Frame 객체를 생성한다.

DrawString fr = new DrawString(str);

fr.setSize(250, 130);

fr.show();

fr.repaint(); // 없어도 동작한다.

}

public void paint(Graphics g){

g.drawString("글씨가 잘보이시나요!!!", 50, 60);

g.drawRect(100, 40 ,50, 50);

}

class WinListener extends WindowAdapter {

public void windowClosing(WindowEvent we){

System.exit(0);

} } }

프레임에 문자열 및 사각형을 그린다.

(18)

GUI 응용 프로그램 만들기

 GUI 설계 과정

GUI 화면 스케치

컨테이너 타입 결정 컴포넌트에 리스트 추가

 비주얼 컴포넌트(레이블, 버튼, 체크박스 등)

각 컨테이너 객체 레이아웃 결정

컴포넌트 객체 생성과 컨테이너에 추가

컴포넌트 크기 결정

컨테이너 화면에 등장 컨테이너객체이름.add(비주얼 컴포넌트 객체이름)

이벤트처리

루틴

(19)

비주얼 컴포넌트

 종류



Label 클래스



Button 클래스



Canvas 클래스 Checkbox 클래스



Checkbox 클래스



Choice 클래스



TextField와 TextArea 클래스



List 클래스



Scrollbar 클래스

(20)

Label 클래스



문자열을 출력시키기 위하여 사용되는 비주얼 컴포넌트



생성자



Label(): 내용을 갖지 않는 Label 객체를 생성



Label(String str):str로 주어진 문자열를 가지는 Label 객체를 생



Label(String str, int alignment): str로 주어진 문자열를 가지는



Label(String str, int alignment): str로 주어진 문자열를 가지는 Label 객체를 생성하고, alignment(Label.LEFT, Label.CENTER, Label.RIGHT)에 의하여 문자열의 위치 결정

(21)

Button 클래스



버튼 유형의 사용자 인터페이스를 제공하는 컴포넌트



생성자



Button(): 빈 button 객체를 생성



Button(String str): str 문자열을 가지는 버튼 객체

메서드 설명

String getLabel() 호출한 Button 객체의 문자열을 반환

Void setLabel(String label) 호출한 button 객체의 label 문자열을 설정

(22)

Canvas 클래스

 비어있는 윈도우를 제공하는 클래스로 흰도화지 와 같으며 이 클래스를 이용하여 사용자는 다양 한 그래픽을 출력

 생성자



Canvas(): Canvas 객체를 생성



Canvas(): Canvas 객체를 생성

(23)

Checkbox 클래스

 사용자의 선택 사항을 받아들일 때 사용하며, true 혹은 false 상태를 가짐

 유형: 여러 개 선택가능(일반형), 하나만 선택 가 능(Radio)

 생성자

 생성자



Checkbox()



Checkbox(String str): str(제목)



Checkbox(String str, boolean state): str(제목), state(선택여부)



Checkbox(String str, boolean state,

CheckboxGroup group): str(제목), state(선택여부), group에 명시된 그룹에 속함

(24)

Checkbox 클래스

(25)

Choice 클래스



풀다운 메뉴와 같은 리스트를 제공하며, 사용자는 리스 트 중에서 하나만을 선택



생성자



Choice()

(26)

TextField와 TextArea 클래스



TextField: 한줄내에서 문자를 입력받음



TextArea: 여러줄에 걸쳐서 문자 입력받음



TextComponent로부터 상속



생성자(TextField)



TextField()



TextField(String str)



TextField(String str)



TextField(int cols)



TextField(String str, int cols)



생성자(TextArea)



TextArea()



TextArea(String str)



TextArea(int rows, int cols)



TextArea(String str, int rols, int cols)



TextArea(String str, int rols, int cols, int scrollbars)

SCROLLBARS_BOTH,

SCROLLBARS_HORIZONTAL_ONLY

SCROLLBARS_VERTICAL_ONLY,

SCROLLBARS_NONE

(27)

TextField와 TextArea 클래스

(28)

List 클래스



여러 개의 선택항목이 리스트에 나타나고, 이들중 하나 이상의 항목을 선택할 수 있는 컴포넌트



생성자

 List()

 List(int rows)

 List(int rows, boolean multiple)

(29)

List 클래스

(30)

Scrollbar 클래스



생성자



Scrollbar()



Scrollbar(int ori): 형태(수평, 수직)



Scrollbar(int ori, int value, int width, int min, int max): value(

초기값), width(변화량), min(최소값), max(최대값)

(31)

컴포넌트 배치



주어진 컴포넌트들을 컨테이너의 어느 위치에 놓을 것인 지를 정하는 과정



자바에서는 컴포넌트들을 배치할 때 픽셀 단위의 절대값 으로 이루어지지 않고, 상대적 위치로 결정함



LayoutManager



LayoutManager



컨테이너에 포함되는 컴포넌트의 배치를 감독하고 도와주는 추

상 클래스



배치관리자



컴포넌트 사이의 간격이나 크기 등의 값을 윈도우 시스템에 적 합한 값으로 매핑해서 화면에 보여줌



LayoutManager의 하위 클래스



FlowLayout, BorderLayout, GridLayout, CardLayout

(32)

FlowLayout 클래스

 컨테이너에 Flow 방식으로 컴포넌트를 배치(왼 쪽->오른쪽, 위->아래)

 컴포넌트에 필요한 최소한의 높이와 위치, 간격 이 자동으로 지정 배치

 생성자

 생성자



FlowLayout()



FlowLayout(int align): LEFT, RIGHT, CENTER



FlowLayout(int align, int hgap, int vgap): 픽셀단위

 사용방법



FlowLayout flow = new FlowLayout();



fr.setLayout(flow); // fr: 컨테이너

(33)

BorderLayout 클래스

 “North, East, South, West, Center” 영역으로 구 분하여 컴포넌트를 배치하는 클래스

 생성자



BorderLayout()

BorderLayout(int hgap, int vgap)



BorderLayout(int hgap, int vgap)

 사용방법



BorderLayout border = new BorderLayout();



fr.setLayout(border); // fr: 컨테이너



border.add(String position, Component comp);



Border.add(“North”, new Button(“위쪽버튼”));

(34)

GridLayout 클래스



컴포넌트를 격자 형태(행과 렬)로 배치하는 클래스



생성자



GridLayout()



GridLayout(int rows, int cols)



GridLayout(int rows, int cols, int hgap, int vgap)



GridLayout(int rows, int cols, int hgap, int vgap)



사용방법



GridLayout grid = new GridLayout();



fr.setLayout(grid); // fr: 컨테이너



grid.add(Component comp);



grid.add(new Button(“버튼1”));

(35)

메뉴 작성



윈도우에서 사용하는 Pulldown 혹은 Popup 메뉴를 작성



Java.awt에서 제공되는 클래스



MenuBar, Menu, MenuItem



구성과정



add() 및 addMenu() 메소드를 이용하여 먼저 메뉴 바를 만들고, 메뉴 바에 주 메뉴를 추가하고, 주 메뉴에 메뉴 아이템을 추가함 메뉴 바에 주 메뉴를 추가하고, 주 메뉴에 메뉴 아이템을 추가함 MenuBar mb = new MenuBar();

Menu file = new Menu("파일"); Menu edit = new Menu("편집");

file.add("불러오기"); file.add("저장하기");

mb.addMenu(file);

Frame fr = new Frame();

fr.setMenuBar(mb);

(36)

메뉴 작성 예

MenuFrame.java

import java.awt.*;

import java.awt.event.*;

public class MenuFrame extends Frame {

public MenuFrame(String str){

super(str);

addWindowListener(new WinListener());

}

public static void main(String args[]){

MenuFrame fr = new MenuFrame("메뉴 예제");

MenuFrame fr = new MenuFrame("메뉴 예제");

MenuBar mb = new MenuBar();

// 파일 메뉴 작성

Menu filemenu = new Menu("파일");

filemenu.add("새글");

filemenu.add("불러오기");

filemenu.add("저장하기");

filemenu.addSeparator();

filemenu.add("인쇄");

filemenu.add("미리보기");

filemenu.addSeparator();

filemenu.add("환경설정");

filemenu.add("끝");

mb.add(filemenu);

MenuBar 객체를 생성한다.

“파일”이라는 메뉴를 생성한다.

“파일” 메뉴에 메뉴 아이템을 추가한다.

구분선을 추가한다.

“파일” 메뉴에 메뉴 아이템을 추가한다.

“파일” 메뉴를 메뉴바에 추가한다.

(37)

메뉴 작성 예

MenuFrame.java

// 편집 메뉴 작성

Menu editmenu = new Menu("편집");

editmenu.add("오려두기");

editmenu.add("복사하기");

editmenu.addSeparator();

editmenu.add("붙이기");

editmenu.add("찾기");

mb.add(editmenu);

fr.setMenuBar(mb);

“편집”이라는 메뉴를 생성한다.

구분선을 추가한다.

“편집” 메뉴에 메뉴 아이템을 추가한다.

“편집” 메뉴를 메뉴바에 추가한다.

메뉴바를 프레임에 추가한다.

fr.setMenuBar(mb);

fr.setSize(250, 130);

fr.show();

}

class WinListener extends WindowAdapter {

public void windowClosing(WindowEvent we){

System.exit(0);

} } }

메뉴바를 프레임에 추가한다.

실행결과

참조

관련 문서

She has devoted her career to progress in the multilateral trade arena from the early days in 1995 when she took charge of WTO affairs in the Korean Ministry of Trade Industry

프랑스 언론은 EURO 2016 개최에 즈음하여 치안문 제에 경험이 많은 인사가 비서실장으로 선택되었다고 평가함... 또한 애니메이션 마켓도 병행, 세계

[r]

[r]

ㅇ 그럼에도 불구, Solidarité Sida의 대표 뤽 바뤼에(Luc Barruet)는 본 행사가 단순히 수익창출을 극대화하는데 그치지 않고, 에이즈

특히, 올해 하이라이트 공연이었던 라메주 산 빙하(glacier de la Meije)아래서 개최되는 스트라스부르그 필하 모니 관현악단(l’Orchestre philharmonique de

언론사와 보도사진작가와의 고용·노동 관계 개선을 위해 언 론사의 보도사진작가들에 대한 보수 지불 기한, 지불방법에 대한 투명성, 최소 근무 기한 보장 등에

[r]