자바 애플릿 프로그래밍
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

자바 애플릿 프로그래밍 PowerPoint PPT Presentation


  • 115 Views
  • Uploaded on
  • Presentation posted in: General

자바 애플릿 프로그래밍. 11. 간단한 자바 애플릿. 11.1 애플릿 소개 자바 애플릿 웹브라우저 내에서 수행되는 자바 프로그램. 11. 간단한 자바 애플릿. 11.1 애플릿 소개 자바 애플릿 자바 애플릿은 main() 함수가 없다 . cf) 일반 자바 어플리케이션은 main() 함수부터 수행 애플릿 프로그램 작성시 Applet 클래스로부터 상속받아야 함 . 애플릿 프로그램은 다음 두 문장을  삽입해 야 한다 .

Download Presentation

자바 애플릿 프로그래밍

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4265211

자바 애플릿 프로그래밍


4265211

11. 간단한 자바 애플릿

11.1 애플릿 소개

  • 자바 애플릿

    • 웹브라우저 내에서 수행되는 자바 프로그램


4265211

11. 간단한 자바 애플릿

11.1 애플릿 소개

  • 자바 애플릿

    • 자바 애플릿은 main() 함수가 없다.

      cf) 일반 자바 어플리케이션은 main() 함수부터 수행

    • 애플릿 프로그램 작성시 Applet 클래스로부터 상속받아야 함.

    • 애플릿 프로그램은 다음 두 문장을 삽입해야 한다.

      importjava.awt.Graphics;

      importjava.applet.Applet;

    • 애플릿뷰어(appletviewer)

      • 애플릿 프로그램을 테스트하기 위해 웹브라우저 대신 사용

    • 애플릿 클래스는 항상 public으로 선언되어야 한다.

  • 자바 애플릿에는 다음의 기본적인 메소드가 정의되어 있음.

    • init(), start(), paint(), stop(), destroy(), update()

    • 애플릿 작성시 이 메소드들을 오버라이드해서 사용한다.


4265211

11. 간단한 자바 애플릿

11.2 Applet 클래스


4265211

11. 간단한 자바 애플릿

예제 : Hello.html

1 <applet code=Hello.class width=200 height=150>

2 </applet>

예제 : Hello.java

1 import java.awt.*;

2 import java.applet.*;

3

4 public class Hello extends Applet {

5 private String Greeting[] = {

6 "Hello, world"

7 };

8

9 public void paint(Graphics g){

10 g.drawString(Greeting[0], 25, 25);

11 }

12 }

% appletviewer Hello.html


4265211

11. 간단한 자바 애플릿

11.3 자바 애플릿을 웹 홈페이지에 등록하기

  • HTML에서 applet 태그는 웹에서 자바 애플릿을 등록하기 위한 태그

  • 실제 애플릿은 .class 파일에 저장되어 있고, applet 태그는 애플릿 클래스 파일을 기술

    <applet

    code = classfile.class

    codebase= directory

    align = aligndirection

    name = appletname

    vspace = 20

    hspace = 30

    width = 200

    height = 100 >

    </applet>

  • applet 태그에서 code, width, height 어트리뷰트는 항상 존재해야

    한다.


4265211

11. 간단한 자바 애플릿

  • 어트리뷰트

    code -컴파일된 자바 애플릿 클래스가 저장된 파일 이름

    codebase -자바 클래스 파일들이 존재하는 디렉토리 이름

    codebase는 HTML 파일과 자바 클래스 파일이 다른 디렉토리에 저장되어 있는 경우에 사용

    align -애플릿 정렬 위치를 결정하는데 사용

    name -애플릿의 이름을 지정 애플릿 이름은 한 웹 페이지에서 여러 개의 애플릿이 있을

    때 애플릿 간에 통신하는데 사용

    vspace -애플릿 주위에서 세로 방향 마진 (단위: 픽셀)

    hspace -애플릿 주위에서 가로 방향 마진 (단위: 픽셀)

    width -애플릿의 가로 방향 크기 (단위: 픽셀)

    height -애플릿의 세로 방향 크기 (단위: 픽셀)


4265211

11. 간단한 자바 애플릿

[예제 코드]

- Java 파일

importjava.awt.*;

importjava.applet.Applet;

publicclassParamPassingextendsApplet{

intsize=0;Stringmesg="";

publicvoidinit(){

mesg=getParameter("msg");

if(mesg==null)mesg="nomessage";

StringsizeStr=getParameter("size");

if(sizeStr==null)size=12;

elsesize=Integer.parseInt(sizeStr);}

publicvoidpaint(Graphicsg){

Fontf=newFont("TimesRomans",Font.BOLD,size);

g.setFont(f);

g.drawString(mesg,25,50); }}


4265211

11. 간단한 자바 애플릿

[예제 코드]

- HTML 파일

<HTML><BODY>

<APPLETCODE="ParamPassing.class"WIDTH=280HEIGHT=70>

<PARAMNAME=MSGVALUE="HELLOJAVA!">

<PARAMNAME=SIZEVALUE="24">

</APPLET></BODY></HTML>

[실행결과]


4265211

11. 간단한 자바 애플릿

11.4 애플릿 메소드

  • init() 함수

    • 웹브라우저가 자바 애플릿이 있는 홈페이지를 처음 방문했을 때

    • 애플릿에서 사용되는 자료들을 초기화하는데 이용

  • start() 함수

    • 애플릿이 다시 살아날 때 자동적으로 호출된다.

      (ex) 웹브라우저가 아이콘에서 원래 상태로 돌아올 때, 혹은

      다른 페이지로 이동했다가 다시 돌아올 때 자동적으로 호출

    • 오디오 파일을 play하거나, 애니메이션을 시작시킬 수 있다.

  • stop() 함수

    • start() 함수와 짝을 이루어 사용

    • 웹브라우저가 아이콘으로 되거나, 다른 홈페이지로 이동할 때 자동적으로 시작된다.

    • 오디오 파일 연주나 애니메이션을 중지시킬 수 있다.

    • stop() 함수가 호출된다고 해서 애플릿이 죽는 것은 아니다.


4265211

11. 간단한 자바 애플릿

  • paint(Graphics g) 함수

    • 애플릿의 그림이 다시 그려져야 된다고 판단될 때 자동적으로 호출 (ex) 애플릿이 처음 시작될 때, 애플릿의 크기가 변경될 때,

      애플릿이 다른 윈도우에 가려졌다가 다시 보여질 때

    • 그래픽스 클래스는 그림을 그리는데 필요한 정보를 가지고 있다.

  • update(Graphics g) 함수

    • 애플릿에 그려진 그림을 모두 지우고 paint() 함수를 호출.

    • 그림이 많은 경우에 그림을 지우고 새로 그리면 깜빡임(flickering)

      이 발생해서 보기 안 좋은 경우에, update() 함수를 오버라이딩

      해서 깜빡임을 줄일 수 있다.

  • repaint() 함수

    • 프로그래머가 그림을 다시 그려야 할 필요성이 있는 경우에 호출

    • repaint() 함수를 호출하면 repaint()는 다시 update()를 호출한다.


4265211

11. 간단한 자바 애플릿

  • destory() 함수

    • 웹브라우저가 종료될 때 애플릿의 호출, 따라서 웹브라우저가

      종료되기 전까지는 애플릿이 종료되지 않음

    • 프로그래머는 destory() 함수를 오버라이드 해서 애플릿이

      적절하게 종료될 수 있도록 종료에 필요한 코드를 넣을 수 있다.

  • 애플릿의 함수들이 호출되는 순서


4265211

11. 간단한 자바 애플릿

11.5 애플릿 프로그래밍에 사용되는 메소드

ImagecreateImage(intwidth,intheight)

width,height크기의Image객체를반환

FontgetFont() 현재설정된Font객체를반환

ColorgetForeground()설정된foregroundColor객체를반환

Dimensionsize()컴포넌트의크기를Dimension객체로반환

voidpaint(Graphicsg) Graphics객체를인자로하여그림을그림

voidrepaint()update()메소드호출을요청

publicvoidupdate(Graphicsg)컴포넌트를배경색으로다시칠하고,

paint()메소드를호출

voidsetFont(Fontf) 폰트를f로설정

voidsetForeground(Colorc) foregroundColor를c로설정

voidsetBackground(Colorc) backgoundColor를c로설정


4265211

11. 간단한 자바 애플릿

[예제 코드]

importjava.applet.Applet;

importjava.awt.Graphics;

publicclassAppletExamextendsApplet{

Stringtemp="";

publicvoidinit(){

temp+="init()"; }

publicvoidstart(){

temp+="start()"; }

publicvoidstop(){

temp+="stop()"; }

publicvoiddestroy(){

System.out.println("appletend"); }

publicvoidpaint(Graphicsg){

g.drawString(temp,5,40); }

}


4265211

11. 간단한 자바 애플릿

[실행 결과]

C:\JAVA\Gui0>appletviewerAppletExam.html

appletend//destroy()메소드의실행결과


4265211

11. 간단한 자바 애플릿

11.6 애플릿에서 색 사용: Color 클래스

o Color 클래스의 생성자

Color(intred,intgreen,intblue)

Color(floatred,floatgreen,floatblue)

Color(intrgb)

o Color 클래스 상수와 RGB값

- Color의상수(RGB값) 색

Color.black(0,0,0) 검은색

Color.blue(0,0,255) 파란색

Color.cyan(0,255,255) 하늘색

Color.gray(128,128,128) 회색

Color.green(0,255,0) 녹색

Color.magenta(255,0,255) 자홍색

Color.pink(255,175,175) 분홍색

Color.red(255,0,0) 빨간색

Color.white(255,255,255) 흰색

Color.yellow(255,255,0) 노란색


4265211

11. 간단한 자바 애플릿

o Color 클래스의 주요 메소드

Colorbrighter()현Color객체보다한단계밝은색을반환

Colordarker()현Color객체보다한단계어두운색을반환

staticColordecode(Strings)throwsNum

문자열s와동일한Color객체를반환

intgetRed()현Color객체의red값을반환

intgetGreen()현Color객체의green값을반환

intgetBlue()현Color객체의blue값을반환


4265211

11. 간단한 자바 애플릿

[예제 코드]

importjava.awt.*;

importjava.applet.Applet;

publicclassColorTestextendsApplet{

publicvoidpaint(Graphicsg){

g.setColor(Color.cyan);

g.drawString("Cyan",10,30);

g.setColor(Color.red);

g.drawString("Red",80,30);

g.setColor(Color.green);

g.drawString("Green",150,30);

Colorc1=newColor(255,170,175);

g.setColor(c1);

g.drawString("Whatcoloritshouldbe?",10,70);

}

}


4265211

11. 간단한 자바 애플릿

[실행 결과]


4265211

11. 간단한 자바 애플릿

11.7 폰트의 사용

- 텍스트의 폰트설정, 크기 및 속성을 설정

o Font 클래스의 생성자

Font(Stringname,intstyle,intfontSize)

o 사용가능한 폰트와 스타일

폰트의이름 폰트스타일

Helvetica,TimesRoman, Font.PLAIN

Courier,Dialog,Serif Font.ITALIC

DialogInput,ZapfDingbats Font.BOLD

o 폰트의 사용 예

Fontfont=newFont("Serif",Font.BOLD+Font.ITALIC,24);

g.setFont(font);


4265211

11. 간단한 자바 애플릿

[예제 코드]

importjava.applet.Applet;

importjava.awt.*;

publicclassFontTestextendsApplet{

publicvoidinit(){

setBackground(Color.yellow); }

publicvoidpaint(Graphicsg){

Fontfp=newFont("TimesRoman",Font.PLAIN,18);

Fontfb=newFont("Helvetica",Font.BOLD,18);

Fontfi=newFont("Courier",Font.ITALIC,18);

Fontfbi=newFont("Dialog",Font.BOLD+Font.ITALIC,18);

g.setFont(fp);//폰트의설정

g.setColor(Color.black);

g.drawString("Font:TimesRoman,Style:Plain",10,22);

g.setFont(fb);//폰트의설정

g.drawString("Font:Helvetica,Style:Bold",10,44);

g.setFont(fi);

g.drawString("Font:Courier,Style:Italic",10,66);

g.setFont(fbi);

g.drawString("Font:Dialog,Style:Bold+Italic",10,88); } }


4265211

11. 간단한 자바 애플릿

[실행 결과]


4265211

11. 간단한 자바 애플릿

11.8 애플릿과 스레드

[스레드를 이용한 텍스트 애니메이션]

publicclassThAppletextendsAppletimplementsRunnable{

Threadth1;

intloc;

publicvoidstart(){

th1=newThread(this);//스레드th1생성

th1.start();

}

publicvoidrun(){

try{

for(loc=0;loc<25;loc++){

repaint();

Thread.sleep(400);//500밀리초간격으로repaint()25번호출

}

}

catch(Exceptione){}

}


4265211

11. 간단한 자바 애플릿

11.8 애플릿과 스레드

[스레드를이용한텍스트애니메이션]

publicvoidpaint(Graphicsg){

Dimensiond=getSize();

Fontfont=newFont("Serif",Font.BOLD,28);

g.setFont(font);

Stringst="JAVA1.2";

g.drawString(st,15*loc,d.height/2);

}}

[실행 결과]


4265211

11. 간단한 자바 애플릿

[그래픽에니메이션]

import java.awt.*;

import java.applet.*;

publicclass GraphicTest extends Applet {

publicvoid init() {};

publicvoid paint(Graphics g) {

Color c1 = Color.red;

Color c2 = Color.yellow;

Color c3 = Color.green;

long s;

g.setColor(c2);

for(int i=1; i<=380; i++) {

try {

Thread.sleep(5);

} catch(Exception e) {}

g.fillOval(i-2, i-2, 20, 20);

g.setColor(c3);

g.fillOval(i-1, i-1, 20, 20);

g.setColor(c2);

} } }


4265211

11. 간단한 자바 애플릿

[디지틀 시계 프로그램]

importjava.util.Date;

publicclassDigitalClockextendsAppletimplementsRunnable{

FontaFont=newFont("TimesRoman",Font.BOLD,22);

DateaDate;

Threadrunner;

publicvoidstart(){

runner=newThread(this);

runner.start();

}

publicvoidstop(){

if(runner!=null){runner=null;}

}

publicvoidrun(){

ThreadthisThread=Thread.currentThread();

while(runner==thisThread){

repaint();

try{Thread.sleep(1000);

}catch(InterruptedExceptione){}

} }


4265211

11. 간단한 자바 애플릿

[디지틀 시계 프로그램]

publicvoidpaint(Graphicsscreen){

aDate=newDate();

screen.setFont(aFont);

screen.drawString(""+aDate,24,50);

}

}

[실행결과]


4265211

11. 간단한 자바 애플릿

[애플릿에서 다중 스레딩 예제]

publicclassHorseAppletextendsAppletimplementsRunnable{

Threadt1;

Threadt2;

publicinta=0,b=0;

Fontfont;

Strings1="HorseA";

Strings2="HorseB";

intrank=1;

publicvoidstart(){

font=newFont("Serif",Font.BOLD,24);

t1=newThread(this);

t2=newThread(this);

t1.start();t2.start();

}


4265211

11. 간단한 자바 애플릿

[애플릿에서 다중 스레딩 예제]

publicvoidrun(){

try{

if(Thread.currentThread()==t1)//현스레드가t1인지체크

for(a=0;a<=70;a++){

if(a==70){s1=s1+""+rank+"등";rank++;}

repaint();

Thread.sleep((int)(Math.random()*1204));

}else

for(b=0;b<=70;b++){

if(b==70){s2=s2+""+rank+"등";rank++;}

repaint();

Thread.sleep((int)(Math.random()*1204));

}

}catch(Exceptione){}

}


4265211

11. 간단한 자바 애플릿

[애플릿에서 다중 스레딩 예제]

publicvoidpaint(Graphicsg){

Dimensiond=getSize();

g.setFont(font);

g.drawString(s1,5*a,d.height/2-20);

g.drawString(s2,5*b,d.height/2+20);

}

}

[실행 결과]


  • Login