자바 네트워크 프로그래밍 -...

Post on 18-Jan-2021

1 views 0 download

Transcript of 자바 네트워크 프로그래밍 -...

자바 네트워크 프로그래밍

(OCJP 국제공인자격 취득 중심)

충북대학교

최민

2

java.awt Package

java.awt 패키지는 자바 애플리케이션 프로그래밍 인터페이스(API : Application Programming Interface)의 일부로서 그래픽 처리를 담당하는 컴포넌트들을 포함합니다. 즉, 화면상에 윈도우를 그리고, 그 위에 버튼이나 텍스트 필드 등을 붙이는데 필요한 GUI 프로그래밍 도구와 이에 관련된 기능을 제공합니다. 따라서, 응용 프로그램 개발자는 이러한 그래픽 처리를 위한 컴포넌트를 사용하여 애플리케이션의 그래픽 사용자 인터페이스(GUI : Graphical User Interface)를 개발할 수 있습니다.

AWT란 Abstract Window Toolkit의 약자인데, Abstract 라는 단어가 붙은 이유는 이 패키지를 이용하여 특정한 운영체제에서만 수행되는 GUI 프로그램을 작성하는 것이 아니라, 자바 프로그램이 수행되는 어떤 운영체제에서든지 수행되는 GUI 프로그램을 작성할 수 있기 때문입니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

3

출제기준

1. 컴포넌트(java.awt.Component)의 배경색, 전경색, 크

기, 활성/비활성화 등의 속성을 조정하는

setBackground(), setForeground(),

setEnabled(boolean), setVisible(boolean) 메소드의

사용법을 확실히 이해합니다. 따라서, 모양이 제시되어 있고,

크기가 변경되었을 때의 처리 방식이 결정되어 있는 GUI를

화면에 표시하는 코드를 작성할 수 있어야 합니다.

2. GUI 컴포넌트들(button, Canvas, Checkbox, Choice,

Label, List, Scrollbar, TextField, TextArea)을 사용한

코드를 작성할 수 있어야 합니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

4

출제기준

3. 이벤트 처리를 위한 리스너 클래스와 메소드를 작성하고,

리스너 메소드 안에서 Event 인수를 이용하여 이벤트가 발

생한 Component는 무엇이고, 이벤트 발생시 마우스의 위

치는 어디며, 이벤트의 본질은 무엇인지 등에 대한 정보를 추

출할 수 있어야 합니다.

4. menu 관련 컴포넌트들(MenuComponent, MenuBar,

MenuItem, Menu, CheckboxMenuItem, PopupMenu)

의 상속관계를 알고 설명할 수 있어야 합니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

5

AWT 개요

자바의 추상화 윈도우 툴킷(AWT : Abstract Window

Toolkit)은 그래픽 사용자 인터페이스를 갖는 프로그램을 작

성할 때 필요로하는 클래스 및 툴을 제공합니다. 추상화

(abstract)라는 용어는 자바가 실행되는 여러 플랫폼에서

공통적으로 작동할 수 있도록 다는 하였다는 점에서 붙여졌

습니다. 자바 프로그램을 작성할 당시에는 추상적인 컴포넌

트를 사용하지만 이것이 실제로 특정 플랫폼에서 실행될 때

해당 플랫폼에 적절한 부가적인 코드가 합쳐져 실현되기 때

문입니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

6

AWT 개요

자바에서 그래픽 사용자 인터페이스(GUI : Graphic User

Interface)를 위해 필요로 하는 3가지 개념은 다음과 같습

니다.

■컴포넌트(Component) : 사용자가 화면에서 볼 수 있는

버튼(Button)이나 텍스트필드(TextField) 등과 같이 사용

자와 상호작용을 하는 객체입니다. 이벤트 핸들링, 컴포넌트

크기조정, 폰트와 컬러 조정, 컴포넌트의 화면 표시 등의 기

능을 가집니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

7

AWT 개요

■컨테이너(Container) : 다른 컴포넌트들을 관리하거나

포함할 수 있는 객체로 레이아웃의 속성을 가지며 프레임

(Frame), 패널(Panel) 등이 있습니다. 컴포넌트나 또 다른

컨테이너를 포함할 수 있습니다.

■이벤트(Event) : 이벤트는 사용자의 특정한 행위(키 누름,

마우스 클릭 등)에 의해서 발생합니다.

따라서, 우리가 GUI를 구현한다고 한다면 컴포넌트를 생성

하여 이를 컨테이너에 결합시킨 뒤 발생하는 이벤트를 처리

할 수 있도록 하는 작업을 의미합니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

8

AWT 개요

일반적으로, 애플리케이션을 작성할 때에는 Frame 오브젝

트를 생성하고, Buton, Label, TextField 등 각종

Component 오브젝트나 Panel과 같은 또 다른 Container

오브젝트를 붙이게 됩니다. 참고로, Frame은 애플리케이션

의 기본 Window이기 때문에 풀다운 메뉴를 설정할 수 있지

만, Frame 위에 다른 Frame을 붙일 수는 없습니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

9

AWT 개요

다음 그림은 AWT 패키지에 있는 각 클래스의 상속 관계와

특징을 요약한 것입니다. 그림에서 패널(Panel) 클래스는

컨테이너 클래스를 상속받고 있는 것을 확인할 수 있습니다.

따라서, 컴포넌트들 혹은 다른 패널들을 포함할 수 있습니다.

부분적으로 Layout을 적용할 때 많이 활용합니다. 애플릿

(Applet) 클래스는 웹브라우저에서 실행될 수 있도록 한 자

바 애플릿의 기본 클래스입니다. 역시 패널 클래스를 상속받

으므로 컴포넌트 혹은 또 다른 패널을 포함할 수 있습니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

10

AWT 개요

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

11

컴포넌트

Object 클래스를 직접 상속받는 클래스로서 모든 AWT 컴포

넌트 클래스들의 부모 클래스 입니다. 마우스나 키 입력 등의

이벤트에 반응하며, 폰트, 그래픽 등에 관련된 도구 등 윈도

우에 관련된 일반적인 메소드들을 가지고 있습니다.

여기서는 컴포넌트 클래스가 가지는 몇 가지 중요한 메소드

들에 관하여 알아보도록 하겠습니다.

void setSize(int width, int height); void setSize(Dimension d); Dimension getSize();

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

12

컴포넌트

getSize() 메소드는 컴포넌트의 크기를 픽셀(pixel)단위로

돌려줍니다. 반대로, setSize() 메소드는 컴포넌트의 크기를

설정하는데 사용됩니다. 실제로, setSize(80, 60); 과 같이

사용하면 현재 컴포넌트의 폭과 높이를 80과 60으로 각각

설정하는 것입니다.

int setForeground(Color c); int setBackground(Color c);

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

13

컴포넌트

setForeground()와 setBackground() 메소드는 컴포넌

트의 전경색(foreground color)과 배경색(Background

color)를 설정하기 위한 메소드입니다. 이들 메소드의 인수

로는 다음과 같은 정적(static) 변수들이 올 수 있습니다. 예

를들어, setForeground(Color.black); 과 같이 사용하면

현재 컴포넌트의 전경색을 검정색으로 설정하는 것입니다.

Color.black Color.orange Color.magenta

Color.red Color.yellow Color.cyan

Color.pink Color.green Color.blue

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

14

컴포넌트

Color 클래스는 sRGB color space에서 디폴트 컬러를 정

의하고 있습니다. 위는 이들 중 몇가지를 골라 나열한 것입니

다.

컴포넌트는 내부에 쓰여질 문자열에 사용될 폰트를 지정할

수 있도록 합니다.

Font getFont(); void setFont(Font f);

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

15

컴포넌트

setFont() 메소드는 해당 컴포넌트의 렌더링에 사용할 특정

폰트를 지정합니다. 예를들어, setFont(new

Font("SanSerif", Font.PLAIN, 14));와 같이 사용할 수

있습니다. 익명(anonymous)클래스로 사용한 Font 클래스

는 생성자로 폰트이름, 스타일, 크기의 인자를 받으며 여기서

는 “산세리프(SanSerif)"체를 보통모양의 14포인트로 설정

하였습니다.

Point getLocation(); void setLocation(int x, int y); void setLocation(Point p);

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

16

컴포넌트

setLocation() 메소드는 컴포넌트의 왼쪽 위 좌표의 위치를

지정합니다. getLocation() 메소드는 현재 컴포넌트의 위치

를 반환합니다. Point 클래스는 생성자로 x, y 좌표를 받아

하나의 객체로 생성하여 줍니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

17

기본 예제

이 예제에서는 AWT를 이용하여 Frame 위에 Button을 붙

이는 기본적인 GUI 애플리케이션을 작성해 봅니다. import java.awt.*; public class AwtApp extends Frame { Button b; public static void main(String[ ] args) { AwtApp a = new AwtApp("AWT 예제"); a.display( ); } AwtApp(String title) { super(title); b = new Button("예"); } void display( ) { add(b); pack( ); setVisible(true); }

} 자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

18

예제 설명

이 예제에서는 AWT를 이용하여 Frame 위에 Button을 붙

이는 기본적인 GUI 애플리케이션을 작성했습니다. 우리가

작성하는 클래스가 Frame에서 상속받은 형태이므로(3행),

21, 23, 24행에서 Frame 클래스에서 상속받은 메소드를

직접 호출할 수 있었습니다.

이 프로그램에서는 setSize( ) 대신에 pack( ) 메소드를 사

용했는데, pack( ) 메소드는 포함하고 있는 Component들

을 표현하기에 적당한 Frame의 크기를 자동 계산해서 설정

해 줍니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

19

기본 예제

import java.awt.*; public class AwtApp2 { Frame f; Button b; public static void main(String[ ] args) { AwtApp2 a = new AwtApp2("AWT 예제2"); a.display( ); } AwtApp2 (String title) { f = new Frame(title); b = new Button("예"); } void display( ) { f.add(b); f.setSize(100,100); f.setVisible(true); }

} 자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

20

기본 예제

이 예제에서는 AWT를 이용하여 Frame 위에 Button을 붙

이는 기본적인 GUI 애플리케이션을 작성하되, Frame 형 멤

버 변수를 선언한 다음(5행), 초기화하여 사용했습니다(16

행). 21, 23, 24행에서 Frame 클래스에 대한 핸들 변수 f를

이용하여 메소드를 호출했습니다.

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

21

실전 문제

import java.awt.*; public class AwtComponents extends Frame { Button b; Label la; TextArea ta; TextField tf; Checkbox cb; Choice c; List li; public static void main(String[ ] args) { AwtComponents ac = new AwtComponents("AWT Components"); ac.display( ); } AwtComponents(String title) { super(title); b = new Button("버튼"); la = new Label("라벨"); ta = new TextArea("텍스트에리어", 5, 20); tf = new TextField("텍스트필드", 20); cb = new Checkbox("체크박스"); c = new Choice( ); li = new List(2, false); }

자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)

22

실전 문제

void display( ) { setLayout(new FlowLayout( )); add(b); add(la); add(ta); add(tf); add(cb); c.add("Green"); c.add("Red"); c.add("Blue"); add(c); li.add("Mercury"); li.add("Venus"); li.add("Earth"); li.add("Mars"); add(li); pack( ); setVisible(true); }

} 자바 네트워크 프로그래밍 (OCJP 국제공인자격증 취득 대비)