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

22
자바 네트워크 프로그래밍 (OCJP 국제공인자격 취득 중심) 충북대학교 최민

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

Page 1: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

자바 네트워크 프로그래밍

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

충북대학교

최민

Page 2: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

2

java.awt Package

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

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

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

Page 3: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

3

출제기준

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

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

setBackground(), setForeground(),

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

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

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

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

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

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

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

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

Page 4: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

4

출제기준

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

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

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

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

출할 수 있어야 합니다.

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

MenuItem, Menu, CheckboxMenuItem, PopupMenu)

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

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

Page 5: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

5

AWT 개요

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

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

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

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

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

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

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

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

문입니다.

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

Page 6: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

6

AWT 개요

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

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

니다.

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

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

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

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

능을 가집니다.

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

Page 7: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

7

AWT 개요

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

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

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

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

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

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

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

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

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

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

Page 8: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

8

AWT 개요

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

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

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

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

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

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

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

Page 9: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

9

AWT 개요

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

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

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

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

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

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

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

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

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

Page 10: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

10

AWT 개요

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

Page 11: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

11

컴포넌트

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

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

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

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

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

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

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

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

Page 12: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

12

컴포넌트

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

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

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

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

설정하는 것입니다.

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

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

Page 13: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

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 국제공인자격증 취득 대비)

Page 14: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

14

컴포넌트

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

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

다.

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

수 있도록 합니다.

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

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

Page 15: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

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 국제공인자격증 취득 대비)

Page 16: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

16

컴포넌트

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

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

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

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

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

Page 17: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

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 국제공인자격증 취득 대비)

Page 18: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

18

예제 설명

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

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

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

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

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

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

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

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

해 줍니다.

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

Page 19: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

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 국제공인자격증 취득 대비)

Page 20: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

20

기본 예제

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

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

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

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

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

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

Page 21: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

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 국제공인자격증 취득 대비)

Page 22: 자바 네트워크 프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2014/Chungbuk/choimin/10.pdf · 2016. 9. 9. · 2 java.awt Package java.awt 패키지는 자바 애플리케이션

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 국제공인자격증 취득 대비)