Pages

2011年4月28日 星期四

[Java] Applet

Java的Applet是可以在網頁上執行的程式。
Applet跟Application不同處是有public void init()、public void start();、public void stop()及destroy()四個函式。
要將Java Application改成Applet很簡單,只要做以下步驟就可以:

1.   首先,主要的類別要extends Applet。並且import java.applet.*;

2.   在此複習我之前寫的GUI程式結構:
       public class UncleClass implements ActionListener
       {
              //元件宣告區,大部分會有個frame。
              public static void main(String s[])
              {
                    UncleClass uu = new UncleClass();
              }
              public UncleClass()
              {
                  //設好屬性,add進來。
                  f.setVisible(true);  //frame f
              }
              public void actionPerformed(ActionEvent evt)
              {
                  //觸發事件處理。
              }
              //寫一些UncleClass自己的函式。

       }// UncleClass

      如此要改成Applet,需改變的地方,可以將建構式改成空函式,將原來建構式內的程式碼,移到public void init()裡面。而start()裡可以寫成:
       public void start()
       {
             super.start();
       }
       至於stop()跟destroy()可以不用寫出來。
       原來在物件宣告處定義的frame,改為定義在main裡面:
       public static void main(String s[])
       {
             UncleClass uu = new UncleClass();
             Frame f = new Frame(“FrameName”);
             uu.init();       uu.start();
             f.add(uu, “Center”);
             f.setSize(300,500);
             f.setVisible(true);
       }
       將Frame的屬性設定放在main裡面。注意如果Frame要使用BorderLayout,在init()裡面,要多一行:
        setLayout(new BorderLayout());
        在init()裡面可以加入一些元件到Frame中:
        直接寫add(ta, “Center”);,不用寫f.add(…)。
        最後加上paint函式:
              public void paint(Graphics g)
              {
                    //視窗縮放或重畫會呼叫這裡。
                    validate();
               }

3.   最後簡單寫一個html文件:
       <applet code=UnlceClass width=300 height=500></applet>
       開啟此html網頁,就可以看到Applet程式了。


        另外,validate()的作用是把Container裡面的元件再lay out出來一遍。建議在物件有add或者其他動作時都要validate一下。
        而有時視窗顯示有問題,將視窗放大縮小又變正常,此時setVisible設為true很可能可以解決此問題。

有了Applet,就可以在自己的網頁上放程式,讓大家一進自己的網站就可以按一些圖形介面了!!

                                                                        by Uncle

沒有留言:

張貼留言