アプレット yukita@k.hosei.ac.jp プログラミング 第10回 アプレット yukita@k.hosei.ac.jp プログラミング第10回
Application と applet 独立したJavaプログラムはアプリケーションと呼ばれ,最初にロードされるクラスの main メソッドの実行から始まる. アプレットは他のアプリケーションの一部として実行されるJavaプログラム。 ここで言う他のアプリケーションとは, WEBブラウザ JDK付属の appletviewer プログラミング第10回
アプレットの作成 import java.applet.*; main メソッドは不要で,以下のメソッドが必須。 javacでコンパイル initメソッド startメソッド stopメソッド destroyメソッド javacでコンパイル HTMLファイルが必要 プログラミング第10回
HelloApplet.java (List B-1, p.311) import java.awt.*; import java.applet.*; public class HelloApplet extends Applet { public void paint(Graphics g){ FontMetrics f=g.getFontMetrics(); int x=0; int y=f.getAscent(); g.drawString("HelloApplet", x, y); } プログラミング第10回
HelloApplet.html (List B-2, p.311) <BODY BGCOLOR="#FFFFCC"> <APPLET CODE="HelloApplet.class" WIDTH=400 HEIGHT=50> </APPLET> </BODY> </HTML> プログラミング第10回
実行方法 HelloApplet.htmlのアイコンをダブルクリックする。 その他いろいろ。 プログラミング第10回
Swingを使ったアプレットの例 インタフェースという言語要素の登場 MouseListener インタフェースの実装 プログラミング第10回
Pattern.java (Swing版) import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.applet.*; public class Pattern extends JApplet implements MouseListener{ final int R=10; int rw=R, rh=R; double rpar=1.0, gpar=1.0, bpar=1.0; Dimension dim; Image offimg; Graphics offgra; プログラミング第10回
Pattern.java (2) public void init(){ String s; s=getParameter("RECTWIDTH"); if(s!=null){ rw=Integer.parseInt(s); } s=getParameter("RECTHEIGHT"); rh=Integer.parseInt(s); addMouseListener(this); プログラミング第10回
Pattern.java (3) public void start(){ dim=getSize(); offimg=createImage(dim.width, dim.height); offgra=offimg.getGraphics(); } プログラミング第10回
Pattern.java (4) public void mouseClicked(MouseEvent e){ int ex=Math.abs(e.getX()-(dim.width-rw))/2; int ey=Math.abs(e.getY()-(dim.width-rh))/2; int dist2=ex*ex + ey*ey; if(-1<dist2 && dist2<1) dist2=1; rpar=Math.random() *ex*ex/dist2; gpar=Math.random() *ex*ey/dist2; bpar=Math.random() *ey*ey/dist2; repaint(); } プログラミング第10回
Pattern.java (5) public void mouseEntered(MouseEvent e){}; public void mouseExited(MouseEvent e){}; public void mousePressed(MouseEvent e){}; public void mouseReleased(MouseEvent e){}; public void update(Graphics g){ paint(g); } プログラミング第10回
Pattern.java (6) public void paint(Graphics g){ if(offgra==null) return; for(int y=0; y<dim.height; y+=rh){ for(int x=0; x<dim.width; x+=rw){ int ex=x-(dim.width-rw)/2; int ey=y-(dim.height-rh)/2; int dist2=ex*ex+ey*ey; int gr=(int)(dist2*rpar)%256; int gg=(int)(dist2*rpar)%256; int gb=(int)(dist2*rpar)%256; offgra.setColor(new Color(gr,gg,gb)); offgra.fillRect(x,y,rw,rh); } g.drawImage(offimg,0,0,this); プログラミング第10回
Pattern.html (1) <HTML> <BODY BGCOLOR="#FFFFCC"> マウスであちこちクリックするとパターンが変化します. <APPLET CODE="Pattern.class" WIDTH=300 HEIGHT=300> <PARAM NAME=RECTWIDTH VALUE=10> <PARAM NAME=RECTHEIGHT VALUE=10> </APPLET> <BR> プログラミング第10回
Pattern.html (2) 著作権については以下の通りなのですが、雪田が著者に無断で勝手に 一部改造しています。従いまして,このプログラムを公開することは 差し控えさせていただきます。 Copyright (C) 1998,1999 by <A HREF=http://www.st.rim.or.jp//~hyuki/>Hiroshi Yuki.</A> </BODY> </HTML> プログラミング第10回