Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다.
애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법 ( 예 ) C>appletviewer example1.html
애플릿에서할수있는것 그래픽을포함한거의모든자바라이브러리를사용할수있다. ( 예 ) 애플릿과애플리케이션의비교 애플릿 main() 메소드를가지지않음 웹을통하여쉽게실행 현재동작되는컴퓨터를변경할수없음 보안측면에서우수 애플리케이션 main() 메소드를가지고여기서부터모든작업이시작 자바웹스타트 (Java Web Start) 기능을이용하면쉽게웹을통하여다운로드되어서실행
전형적인애플릿의구조 public class MyApplet extends JApplet { public void init() { // 애플릿초기화 public void start() { // 애플릿의실행시작 public void stop() { // 애플릿의실행정지 public void destroy() { // 애플릿의종료 public void paint(graphics g) { // 그림을그리는코드... 애플릿위에그림을그린다. import java.awt.graphics; import javax.swing.japplet; 애플릿 #1 JApplet을상속받는다. public class MyApplet extends JApplet { public void paint(graphics g) { super.paint(g); g.drawstring(" 애플릿프로그래머여러분안녕하세요?", 50, 25); Paint() 메소드를재정의한다.
애플릿을실행시키려면 Test.html 파일을작성한다. <html> </html> <body> <applet code="myapplet MyApplet.class class" width=400 height=100> </applet> </body> Appletviewer 로실행한다. C> appletviewer Test.html 애플릿이들어있는위치지정 절대경로형식 <applet codebase="http://test.sch.ac.kr/pub/java" code="myapplet.class" width=200 height=80> </applet> 상대경로형식 <applet codebase="pub/java" code="myapplet.class" width=200 height=80> </applet>
import java.awt.color; import java.awt.graphics; import javax.swing.japplet; 애플릿 #2 public class MyApplet1 extends JApplet { Paint() 메소드를 public void paint(graphics g) { 재정의한다. super.paint(g); g.setcolor(color.yellow); g.filloval(0, 0, getsize().width - 1, getsize().height - 1); g.setcolor(color.black); g.drawstring(" 그래픽도사용할수있죠!", 10, getsize().height / 2); 그래픽메소드사용 import javax.swing.japplet; import java.awt.graphics; 애플릿 #3 public class HelloWorld extends JApplet { public void paint(graphics g) { g.drawrect(0, 0, getsize().width - 1, getsize().height -1); g.drawstring("hello world!", 5, 15); 애플릿의크기
애플릿의생명주기 애플릿과웹브라우저인터페이스 init() 애플릿을초기화하는메소드 애플릿이들어있는페이지를열때자동으로호출 start() 사용자가애플릿이포함된페이지를방문할때마다호출 stop() 사용자가애플릿이포함된페이지를떠날때호출된다. destroy() 브라우저가닫힐때만호출된다.
import java.awt.graphics; import javax.swing.japplet; 애플릿예제 public class MyApplet2 extends JApplet { StringBuffer output; public void init() { output = new StringBuffer(); output.append("init() "); repaint(); public void start() { output.append("start() "); repaint(); public void stop() { output.append("stop() "); repaint(); 애플릿 #2 public void destroy() { output.append("destroy() "); repaint(); public void paint(graphics g) { super.paint(g); g.drawstring(output.tostring(), 10, 10);
실행결과 애플릿위에서 GUI 사용 모든 GUI 컴포넌트를사용할수있다. ( 예 ) 다음과같이마우스를클릭하면사각형을그리는애플릿을작성하여보자.
import java.awt.event.*; import java.applet.applet; import java.awt.color; import java.awt.graphics; 애플릿예제 public class MyApplet3 extends Applet implements MouseListener { int x, y; public void init() { addmouselistener(this); // 마우스리스너를등록한다. public void paint(graphics g) { super.paint(g); g.setcolor(color.red); g.fillrect(x, y, 20, 20); // 미우스의현재위치에사각형을그린다. 애플릿예제 public void mouseentered(mouseevent event) { public void mouseexited(mouseevent E event) { public void mousepressed(mouseevent event) { public void mousereleased(mouseevent event) { public void mouseclicked(mouseevent event) { x = event.getx(); // 미우스가클릭되면현재위치를얻는다. y = event.gety(); repaint(); // 다시화면을그린다. paint() 를직접호출하는것이아니라 repaint() 를호출한다.
import java.awt.event.*; import java.applet.applet; import java.awt.*; import javax.swing.*; 애플릿예제 public class MyApplet4 extends JApplet implements ActionListener { JTextField field; JTextArea area; public void init() { field = new JTextField(); area = new JTextArea(); setlayout(new BorderLayout()); add(field, BorderLayout.SOUTH); add(area, BorderLayout.CENTER); field.addactionlistener(this); 배치관리자를 BorderLayout 으로변경 애플릿예제 public void actionperformed(actionevent arg0) { area.append(field.gettext() + "\n"); field.selectall(); l area.setcaretposition(area.getdocument().getlength()); repaint(); 이벤트처리기작성.
애플릿매개변수 애플릿과웹브라우저는매개변수를통하여값들을주고받을수있다. HTML <APPLET CODE="test.class" WIDTH=200 HEIGHT=200> 파일 <PARAM NAME="imgDir" VALUE="java/images"> <PARAM NAME="bColor" VALUE="0xff00c0"> <PARAM NAME="COUNT" VALUE=20>... </APPLET> 애플릿 int count = 0;... String countstring = getparameter("count"); if (wstring!= null) { try { count = Integer.parseInt(countString); catch (NumberFormatException e) { count = 10; // 디폴트값을사용 애플릿이할수없는것 신뢰받지못한애플릿이할수없는기능은다음과같다. 라이브러리를적재하거나네이티브메소드를정의할수없다. 수행되고있는호스트컴퓨터의파일을읽고쓸수없다. 네트워크를통한연결을만들수없다. 호스트컴퓨터상의프로그램을실행시킬수없다. 호스트컴퓨터의시스템특성을읽을수없다.
Q & A