29
Chapter16 : 애애애애 애애애 16.1 애애애 (applet) 애 애애 16.2 Applet 애애애 16.3 애애애애 애애애애 (life cycle) 16.4 애애애애 애애 16.5 애애애 애애 16.6 애애 애애 16.7 애애 (font) 애 애애 16.8 HTML 애애애 애애 16.9 애애애애 애애 16.10 애애애애애애 애애애 애애

Chapter16 : 애플릿과 그래픽

Embed Size (px)

DESCRIPTION

16.1 애플릿 ( applet) 의 개요 16.2 Applet 클래스 16.3 애플릿의 생명주기 ( life cycle) 16.4 애플릿의 보안 16.5 그래픽 사용 16.6 색의 사용 16.7 글꼴 ( font) 의 사용 16.8 HTML 애플릿 태그 16.9 이미지의 사용 16.10 애플릿에서의 스레드 사용. Chapter16 : 애플릿과 그래픽. 16.1 애플릿의 개요. 애플릿 프로그램 WWW 검색기나 애플릿 뷰어( appletviewer) 에서 실행되는 작고 간단한 프로그램 - PowerPoint PPT Presentation

Citation preview

Chapter16 : 애플릿과 그래픽

16.1 애플릿 (applet) 의 개요16.2 Applet 클래스16.3 애플릿의 생명주기 (life cycle)16.4 애플릿의 보안16.5 그래픽 사용16.6 색의 사용16.7 글꼴 (font) 의 사용16.8 HTML 애플릿 태그16.9 이미지의 사용16.10 애플릿에서의 스레드 사용

16.1 애플릿의 개요• 애플릿 프로그램

– WWW 검색기나 애플릿 뷰어 (appletviewer) 에서 실행되는 작고 간단한 프로그램

– WWW 의 HTML 코드내에서 호출되어 실행– 대부분의 WWW 검색기는 애플릿을 해석하여 실행할 수

있는 interpreter 내장

16.2 Applet 클래스

• 모든 애플릿 프로그램은 java.applet.Applet 클래스로부터 상속되어 작성되어야 한다

• Applet 클래스의 상위 클래스

java.lang.Object

java.awt.Component

java.awt.Container

java.awt.Panel

java.applet.Applet

16.2 Applet 클래스• Component 클래스 : GUI 구축에 필요로 되는 많은 하위

클래스들을 가지고 있다 . 약 100 여개의 메소드 제공– Component 클래스의 주요 메소드

Image createImage(int width, int height) width, height 크기의 Image 객체를 생성하여 반환

Font getFont() 현재 설정된 폰트를 폰트 객체로 반환FontMetrics getFontMetrics(Font font) font 폰트에 관한 FontMetrics 객체를 반환Color getForeground() 전경색 (foreground) 을 Color 객체로 반환Dimension getSize() 현재 컴포넌트의 크기를 Dimension 객체로

반환void paint(Graphics g) 현 재 의 컴 포 넌 트 에 Graphics 객 체 g 를

이용하여그림을 그리는 메소드

void repaint() JVM 에게 update() 메소드 호출을 요청한다void setBackground(Color c) 배경색을 c 로 설정void setFont(Font f) 폰트를 f 로 설정void setForeground(Color c) 전경색을 c 로 설정public void update(Graphics g) 컴포넌트를 배경색으로 채우고 paint()

메소드를 호출한다

16.2 Applet 클래스• Container, Panel 클래스 : 다른 컴포넌트들을 담을 수 있는 클래스 (18 장

설명 )• Applet 클래스 : 애플릿의 기본동작에 해당하는 메소드 제공

void init() 애플릿을 초기화한다void start() 애플릿을 시작시킨다void stop() 애플릿을 중단한다void destory() 애플릿을 끝낸다URL getCodeBase() 애플릿 코드가 있는 URL 객체를 반환URL getDocumentBase() HTML 문서가 있는 URL 객체를 반환Image getImage(URL url) url( 파일이름 포함 ) 이 지정하는 곳에서 이미지를

가져와Image 객체로 반환

Image getImage(URL url, url( 파 일 이 름 불 포 함 ) 이 지 정 하 는 곳 에 서 imgName 으로

String imgName) 지정된 이미지 파일을 가져와 Image 객체로 반환String getParameter(String pName) 애플릿 호출시 사용한 매개변수 중에서 pName

매개변수의 값을 반환void showStatus(String str) 검색기의 상태 라인에 str 을 나타낸다

16.3 애플릿의 생명주기 (lift cycle)

• 사용자가 작성하는 애플릿 프로그램은 생명 주기를 가진다• 사용자가 작성하는 애플릿 프로그램에서 Applet 클래스의 메소드들을

오버라이딩하여 애플릿의 기본 기능 작성

import java.applet.*;public class MyApplet extends Applet { ....… public void init() { ..... } public void start() { ....... } public void stop() {....... } public void destroy() { ........ } .....…}

16.3 애플릿의 생명주기 (lift cycle)

• 애플릿의 기본 메소드– init() : 애플릿이 로드되거나 재로드 될 때 수행 . 애플릿의 초기화를 위해

사용

– start() : 초기화가 끝난 애플릿을 화면에 보여주는 역할을 하는 메소드 (생략가능 ). 애플릿 페이지를 잠시 떠났다가 다시 애플릿 페이지로 돌아왔을 때에도 start() 메소드가 수행

– stop() : 사용자가 애플릿이 있는 페이지를 떠나거나 검색기를 아이콘화 하였을 때 실행되는 메소드

– destory() : 검색기나 애플릿이 종료될 때 실행되는 메소드

16.3 애플릿의 생명주기 (lift cycle)

• 애플릿에 그림을 그리고 컴포넌트들을 나타내기 위해서는 Component 클래스에서 제공되는 paint() 메소드를 오버라이딩하여 구현한다– 애플릿에 그래픽을 출력하기 위한 메소드– 실행 : start() 메소드가 수행된 후 애플릿을 reload 할 때 애플릿 화면을 떠났다가 다시 돌아올 때 검색기가 아이콘화 되었다가 다시 복귀될 때

• 일반적인 메소드들은 명시적으로 메소드를 호출하는 메시지에 의해 수행되지만 , 애플릿 메소드들은 검색기에 의해 자동으로 호출

16.3 애플릿의 생명주기 (lift cycle)

paint() 메소드는 애플릿에 그래픽을 출력하기위한 메소드이다 . start() 또는 init() 메소드에 의해자동으로 호출되어 수행된다 .

stop() destroy()start()init()

처음 방문시

페이지를 떠날때

애플릿을 종료

애플릿 페이지로 복귀 할 때

paint() 애플릿의 동작

16.3 애플릿의 생명주기 (lift cycle)

• 애플릿 프로그램의 예/*<html><head><title> 애플릿 생성에서 실행까지 </title></head><body><applet code="AppletExam" width=550 height=80></applet></body></html>*/import java.applet.Applet;import java.awt.Graphics;

16.3 애플릿의 생명주기 (lift cycle)

public class AppletExam extends Applet { String temp = ""; public void init() { temp += "init() 수행 "; } public void start() { temp += "start() 수행 "; } public void stop() { temp += "stop() 수행 "; } public void destroy() { // 애플릿이 종료될 때 호출 System.out.println(" 애플릿이 종료 "); } public void paint(Graphics g) { g.drawString(" 애플릿이 생성되어 종료되기까지 ........",30,30); g.drawString(temp, 10, 50); }}

16.3 애플릿의 생명주기 (lift cycle)

16.3 애플릿의 생명주기 (lift cycle)

• 대부분의 애플릿 응용 프로그램들은 사용자와의 상호작용을 요구한다 . 사용자의 동작 (event) 을 받아들여 처리하는 형태의 프로그램을 이벤트 지향(event-driven) 프로그램이라 한다 (391p 프로그램 참조 )

• 자바는 이벤트 처리와 관련된 패키지를 제공하고 있다 (17 장 )

16.4 애플릿의 보안

• 애플릿 프로그램들은 네트웍을 통하여 다운로드 되어 실행되므로 다음과 같은 제한을 가진다– 애플릿들은 다운로드된 컴퓨터의 지역 프로그램을 실행시킬 수 없다 .– 애플릿들은 다운로드되는 서버가 아닌 다른 컴퓨터와의 통신은 허용하지

않는다 .– 애플릿들은 다운로드된 컴퓨터의 파일 시스템에 접근할 수 없다– 애플릿들은 다운로드된 컴퓨터의 정보를 알 수 없다 ( 예외 : 검색기의

버전 , 운영체제의 이름과 버전 , 경로 등은 알 수 있다 .) • JVM 은 애플릿 프로그램이 클라이언트 컴퓨터의 디스크를 읽거나 쓰는

동작을 시도하면 보안 (security) 관련 예외를 발생시킨다

16.5 그래픽 사용

• 자바는 다양한 그래픽 기능을 제공하기 위해 java.awt.Graphics 클래스 제공

• 이 클래스에서 제공되는 메소드를 이용하여 다양한 형태의 그래픽을 나타낼 수 있다

16.5 그래픽 사용• Graphics 클래스의 주요 메소드void drawArc(int x, int y, int w, startAngle 과 endAngle 로 지정된 각도를 int h, int startAngle, int endAngle) 가지는 원호를 그린다void drawImage(Image img, int x, img 로 지정된 이미지를 애플릿의 x,y 좌표에 int y, imageObserver io) 그린다viod drawLine(int x0, int y0, int x1, int y1) x0,y0 부터 x1,y1 까지 라인을 그린다void drawOval(int x, int y, int w, int h) x,y 좌표에 w,h 의 폭과 높이를 가진 타원을 그린다void drawPolygon(int x[], int y[], int n) x[] 와 y[] 배열의 각 점을 좌표로 하여 n 개의

코너점을 가진 다각형을 그린다void drawRect(int x, int y, int w, int h) x,y 좌표에 w,h 의 폭과 높이를 가진 사각형을 그린다void drawString(String str, int x, int y) 문자열을 x,y 좌표에 그린다void fillArc(int x, int y, int w, int h, 속이 찬 원호를 그린다 int startAngle, int endAngle) void fillOval(int x[], int y[], int n) 속이 찬 타원을 그린다void fillPolygon(int x[], int y[], int n) 속이 찬 다각형을 그린다void fillRect(int x, int y, int w, int h) 속이 찬 사각형을 그린다Color getColor() 현재 객체의 색을 Color 객체로 반환Font getFont() 현재 객체의 폰트를 Font 객체로 반환FontMetrics getFontMetrics() 현재 객체의 폰트 정보를 FontMetrics 객체로 반환void setColor(Color color) 현재 객체의 색을 color 로 설정

16.5 그래픽 사용

• 그래픽을 애플릿의 크기에 따라 상대적인 위치에 나타내기 위해 애플릿의 크기 정보를 제공하는 Dimension 클래스를 이용

• Dimension 클래스는 애플릿의 폭과 높이를 제공하는 클래스이다

• 생성자

Dimension(Dimension d)dimension(int w, int h)

d : Dimension 객체w,h : 애플릿의 폭과 높이

16.6 색의 사용

• 자바는 색에 관한 기능을 가지는 java.awt.Color 클래스를 제공• 그래픽 객체에 색을 설정하기 위해서는 Color 객체를 생성한 다음 setColor() 메소드를 사용하여 설정• 색을 설정하는 예

....…public void paint(Graphics g) {

...…

Color c = Color.orange;

g.setColor(c);

g.fillRect(100, 10, 60, 50);

}

16.6 색의 사용

• Color 클래스의 주요 메소드

Color brighter() 현재 객체의 색보다 한 단계 밝은 색의 Color 객체를 반환

Color darker() 현재 객체의 색보다 한 단계 어두운 색의 Color 객체를

반환 static Color decode(String str) 문자열 str 과 동일한 Color 객체를 반환 throws NumberFormatExceptionbooleanequals(Object obj) 현재의 객체와 obj 로 지정된 객체가 같은

색을 가지면 true, 아니면 false 를 반환int getRed() 현재 객체의 R(red) 값을 반환int getGreen() 현재 객체의 G(green) 값을 반환int getBlue() 현재 객체의 B(blue) 값을 반환int getRGB() 현재 객체의 RGB 값을 반환

16.7 글꼴 (font) 의 사용

• 애플릿에 대한 텍스트 출력을 객체로 취급• 애플릿에 텍스트를 출력하기 위해서는 Graphics 클래스의

drawString() 메소드 사용• 출력되는 그래픽 (텍스트 ) 에 폰트를 지정하기 위해서는 Font 객체를

생성한 다음 setFont() 메소드를 사용하여 설정• 사용 예

......…public void paint(Graphics g) { .....… Font font = new Font("Serif", Font.ITALIC, 36); g.setFont(font); g.drawString("JAVA APPLET", 100, 50); ....…

}

16.7 글꼴 (font) 의 사용

• 폰트 관련 클래스– Font 클래스 : 다양한 글꼴에 관한 정보 제공– FontMetrics : 글꼴의 크기에 관한 정보 제공

• Font 클래스 생성자Font(String name, int style, int fontsize)

name : 글꼴의 이름으로서 Serif, SansSerif, Monospaced 가 많이 사용style : 상수로서 BOLD, ITALIC, PlAIN 이 사용

fontsize : 글꼴의 크기• FontMetrics 클래스 생성자

FontMetrics(Font font)font : 정보를 얻고자 하는 글꼴의 이름

16.7 글꼴 (font) 의 사용

• Font 클래스의 주요 메소드String getName() 글꼴의 이름을 반환int getSize() 글꼴의 크기를 반환int getStyle() 글꼴의 스타일을 반환

• FontMetrics 클래스의 주요 메소드int charWidth(char c) 문자 c 의 폭을 반환int charWidth(int i) i 값을 문자로 변환한 다음 문자의 폭을 반환int getAscent() acent 를 반환int getDescent() descent 를 반환int getHeight() height 를 반환int getLeading() leading 을 반환int stringWidth(String str) 문자열 str 의 폭을 반환

16.7 글꼴 (font) 의 사용

• FontMetrics 가 제공하는 글꼴 크기에 관한 정보

App머리선

기준선

꼬리선

텍스트 다음줄getHeight()

getAscent()

getDescent() getLeading()

16.8 HTML 애플릿 태그

• 애 플 릿 을 WWW 에 서 사 용 하 기 위 해 서 는 HTML 문 서 내 에 <APPLET> 태그를 사용하여 애플릿을 지정하여야 한다

• 애 플 릿 이 포 함 된 HTML 문 서 는 대부분의 검색기나 애플릿 뷰어에 의해 수행할 수 있다

16.8 HTML 애플릿 태그

• 애플릿 태그

<APPLET [CODEBASE = codebaseURL] CODE = appletFile [ALT = alternateText] [NAME = appletInstanceName] WIDTH = pixels HEIGHT = pixels [ALIGN = alignment] [VSPACE = pixels] [HSPACE = pixels]>[<PARAM NAME = AttributeName1 VALUE =AttributeValue1>][<PARAM NAME = AttributeName2 VALUE = AttributeValue2>].....…[<PARAM NAME = AttributeNamen VALUE = AttributeValuen>]</APPLET>

16.8 HTML 애플릿 태그

CODEBASE : 애플릿 파일이 로드될 디렉토리를 지정하는 속성 . 검색기는 애플릿 코드가 포함된 HTML 파일을 로드한 다음에 <APPLET> 태그에서 지정된 애플릿 코드를 로드한다 . 만일 CODEBASE 가 지정되어 있으면 검색기는 CODEBASE 에서 지정된 디렉토리로부터 애플릿 코드를 읽어 들이고 , 지정되어 있지 않으면 HTML 파일이 로드된 디렉토리로부터 애플릿 코드를 읽어 들인다 .

CODE : 실행을 원하는 애플릿 파일을 지정ALT : 검색기가 애플릿을 실행할 수 없을 때 나타낼 메시지를 지정하는 속성NAME : 애플릿 객체의 이름을 지정하는 태그 . 한 페이지에 여러개의 애플릿을

생성하여 애플릿간의 통신을 해야 한다면 각각의 애플릿은 이름을 가져야 한다 .WIDTH 와 HEIGHT : 검색기의 데이터 창에 나타낼 애플릿의 크기를 지정VSPACE 와 HSPACE : VSPACE 는 애 플 릿 의 위 아 래 공 간 을 지 정 하 고 ,

HSPACE 는 애플릿의 양쪽옆의 공간을 지정PARAM NAME 과 VALUE : 애플릿에 넘겨줄 데이터를 지정한다 . 하나의 데이 터 는 이 름 과 값 으 로 이루어 진 다 . 애 플 릿 프 로 그 램 에 서 는 getParameter() 메소드를 이용하여 이 데이터 값을 가져올 수 있다 .

16.9 이미지의 사용

• Applet 클래스에서 이미지와 관련된 getImage() 메 소 드 제 공 하 며 이 메소드는 Image 클래스의 객체를 반환

• 이미지를 애플릿에 나타내기 위해서는 Graphics 클 래 스 에 서 제 공 하 는 drawImage() 메 소 드 를 사 용 하 여 이미지를 나타낸다 .

16.10 애플릿에서의 스레드 사용

• 애플릿 프로그램은 이미 Applet 클래스로부터 상속을 받고 있으므로 Runnable 인터페이스를 이용하여 스레드 사용

• 일반적으로 애플릿 스레드는 애플릿에 동적으로 그래픽을 출력하기 위해 paint() 메소드를 호출

• paint() 메소드는 애플릿이 처음에 검색기나 애플릿 뷰어에 로드되거나 , 또는 사용자에 의해 재로딩 (reloading) 이 요청되면 검색기에 의해 자동으로 호출되어 수행되는 메소드

16.10 애플릿에서의 스레드 사용

• 애플릿에 그래픽을 출력하는 메소드를 이해하기 위해서는 Component 클 래 스 에 서 제 공 되 는 paint(), repaint(), update() 메 소 드 의 기 능 을 이해하여야 한다 ([표 16-1]참조 ).

– repaint() 메소드 : 스레드에서 애플릿이 다시 그려져야 할 필요가 있을 때는 프로그램에서 명시적으로 호출 . repaint() 메소드는 JVM 에게 애플릿을 다시 그릴 것을 요청하는 메소드이다 . JVM 은 스케줄에 따라 애플릿을 다시 그릴 것인지를 결정한 다음 , update() 메소드를 호출

– update() 메소드 : 현재의 애플릿을 지우고 , 애플릿을 배경색으로 나타낸 다음 paint() 메소드를 호출

– paint() 메소드 : 그래픽 객체를 애플릿에 나타내는 일을 한다 .