2012年7月24日 星期二

Java Applet


用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> 

沒有留言:

張貼留言