用javac -encoding utf-8 neoApplet.java 編譯
neoApplet.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.applet.AudioClip;
public class neoApplet extends Applet implements ItemListener,ActionListener,MouseListener,MouseMotionListener{
Button btn; // 宣告 Button 型態的變數 btn
int image_x=10,image_y=10,dx,dy;
Image img;
Image imgBackup; // 宣告 Image 類別型態的變數 imgB
Graphics gBackup; // 宣告 Graphics 類別型態的變數 gB
boolean clicked=false;
AudioClip midi[]=new AudioClip[2]; // 宣告 AudioClip 介面型態的陣列
AudioClip midiplayer; // 宣告 AudioClip 介面型態的變數 current
Choice chc=new Choice(); // 建立 Choice 元件
public void mouseMoved(MouseEvent e){} //MouseMotionListener
public void mouseEntered(MouseEvent e){} //MouseListener
public void mouseExited(MouseEvent e){} //MouseListener
public void mouseReleased(MouseEvent e){}//MouseListener
public void mousePressed(MouseEvent e)
{
dx=e.getX()-image_x; // 取得按下之點與基準點 x 方向之距離
dy=e.getY()-image_y; // 取得按下之點與基準點 y 方向之距離
}
public void mouseDragged(MouseEvent e)
{
if(dx>0 && dx< Integer.valueOf(getParameter("imageWIDTH")) && dy>0 && dy< Integer.valueOf(getParameter("imageHEIGHT"))) // 如果指標落在圖形上方
{
image_x=e.getX()-dx; // 取得拖曳時,基準點的 x 座標
image_y=e.getY()-dy; // 取得拖曳時,基準點的 y 座標
paint(getGraphics());
//Graphics g=getGraphics();
// update(g); // 清空畫面為背景顏色,再呼叫 paint()
}
}
public void mouseClicked(MouseEvent e)
{
}
public void init()
{
midi[0]=getAudioClip(getCodeBase(),"sky.mid");
midi[1]=getAudioClip(getCodeBase(),"panther.mid");
midiplayer=midi[0];
midiplayer.play();
chc.add(" sky ");
chc.add(" panther ");
add(chc);
btn=new Button(getParameter("buttonCaption")); // 建立 btn 物件
btn.addActionListener(this); // 以 applet 本身當成 btn 的傾聽者
add(btn); // 將 btn 按鈕加入 applet 視窗裡
img=getImage(getCodeBase(),getParameter("imageFileName")); // 載入圖檔
imgBackup=createImage(getWidth(),getHeight());
gBackup=imgBackup.getGraphics();
addMouseListener(this); // 設定 applet 為自己本身的傾聽者
addMouseMotionListener(this);
chc.addItemListener(this); // 把 applet 當成 chc 的傾聽者
}
public void paint(Graphics g)
{
gBackup.setColor(new Color(255,255,255)); // 設定繪圖顏色為白色
gBackup.fillRect(0,0,getWidth(),getHeight()); // 以白色填滿整個畫面
gBackup.setColor(Color.blue); // 設定繪圖顏色為藍色
gBackup.fillOval(30,30,50,50); // 繪出圓形並填滿藍色
gBackup.drawImage(img,image_x,image_y,this); // 將 img 畫上
gBackup.setColor(Color.orange); // 設定繪圖顏色為橘色
gBackup.fillOval(60,40,90,90); // 繪出圓形並填滿橘色
g.drawImage(imgBackup,0,0,this); // 將 imgB 的內容顯示在 applet 上
}
public void actionPerformed(ActionEvent e)
{
System.out.println("Button was clicked message show in the java console");
if(btn.getLabel().equals(getParameter("buttonCaption")))
{
btn.setLabel("clicked"); // 設定按鈕上方的文字為 Stop
}
else {
btn.setLabel(getParameter("buttonCaption")); // 設定按鈕上方的文字
}
}
public void itemStateChanged(ItemEvent e)
{
midiplayer.stop(); // 停止播放歌曲
int index=chc.getSelectedIndex(); // 取得被選取的索引值
midiplayer=midi[index]; // 設定播放的歌曲為 midi[index]
midiplayer.play(); // 播放歌曲
}
}
web.html.
<!-- web.htm -->
<HTML>
<BODY BGCOLOR = "FFFF00" >
<APPLET
CODE = "neoApplet.class"
WIDTH = "180"
HEIGHT = "180"
ALT = " 很抱歉,您的瀏覽器不支援 Java applet"
ALIGN = "MIDDLE"
VSPACE = "20"
>
<PARAM NAME = "buttonCaption" VALUE = "按鈕">
<PARAM NAME = "imageFileName" VALUE = "logo.jpg">
<PARAM NAME = "imageWIDTH" VALUE = "55">
<PARAM NAME = "imageHEIGHT" VALUE = "55">
</APPLET>
</BODY>
</HTML>
要想在前面加package neo.applet; 封裝起來的話
用JAR方式可用 jar cvf neoAppletExample.jar -C ./classes/* .
注意最後有個點,classes下是/classes/neo/applet/neoApplet.class
web_jar.html
<HTML>
<BODY BGCOLOR = "FFFF00" >
<APPLET
CODEBASE = "."
CODE = "neo.applet.neoApplet"
ARCHIVE = "neoAppletExample.jar"
WIDTH = "180"
HEIGHT = "180"
ALT = " 很抱歉,您的瀏覽器不支援 Java applet"
ALIGN = "MIDDLE"
VSPACE = "20"
>
<PARAM NAME = "buttonCaption" VALUE = "按鈕">
<PARAM NAME = "imageFileName" VALUE = "logo.jpg">
<PARAM NAME = "imageWIDTH" VALUE = "55">
<PARAM NAME = "imageHEIGHT" VALUE = "55">
</APPLET>
</BODY>
</HTML>
沒有留言:
張貼留言