如何編寫小應用程序(Applet)並把其嵌入到網頁中去的問題在很多關於Java的書中均有討論。在這裡我們不再重復此類問題,而是討論如何將一個小應用程序用做構件,並能讓自己編寫的應用程序正常地加載並運行Java小應用程序。
什麼是小應用程序(Applet)
“Applet”(小應用程序)通常被認為是能嵌入互聯網網頁的有安全防護的應用程序。應該說這樣的定義並不是很精確。下面讓我們先來看看小應用程序的內涵。
圖1 此圖顯示的是“SimpleApplet”作為獨立應用程序運行的情景
小應用程序的基礎類是java.applet.Applet類,它擴充自java.awt.Panel類,所以可以說小應用程序是一些面板(Panel)。而java.awt.Panel類又擴充自java.awt.Container類,所以也可以認為小應用程序是一些容器(Container)。再往下看,你會發現java.awt.Container
類擴充自java.awt.Component類,所以又可以說小應用程序(Applet)是一些構件(Component),這也就意味著小應用程序有能力處理各種事件,並能夠被添加到各種容器中。
讓小應用程序作為構件使用
在上面的討論中,我們已明確了小應用程序Applet是構件(Container),這就意味著可采用適當的形式將小應用程序Applet嵌入到容器中去。
圖2 用其他類將小應用程序加載入應用程序運行時的情景
1、用main()方法加載、運行小應用程序
要讓小應用程序嵌入其他程序中,可按普通應用程序來使用,實現的關鍵在於:在main()方法裡完成小應用程序的實例化,然後調用該小應用程序的init()和start()方法,並為該小應用程序創建一個新的框架,並把小應用程序納入其中。源程序清單如下:
SimpleApplet.java
import java.applet.*;
import java.awt.*;
public class SimpleApplet extends Applet{
public static void main(String[] args){
Frame f=new Frame("A frame!");
SimpleApplet h=new SimpleApplet();
h.init();
h.start();
f.add("Center",h);
f.pack();
f.show();
}
public void init(){
add(new Label("I am a Component"));
}
}
2、用其他類加載小應用程序
小應用程序不一定非要作為應用程序的首要驅動者。如果有必要,其他類也能夠加載、安裝並運行一些小應用程序。下例將創建一框架(Frame),兩次加載一個小應用程序。源程序清單分別如下:
SimpleApplet.java
import java.applet.*;
import java.awt.*;
public class SimpleApplet1 extends Applet{
public void init(){
add(new Label("I am a Component"));
}
}
Multi.java
import java.applet.*;
import java.awt.*;
public class Multi extends Frame{
public static void main(String[] args){
Multi ma=new Multi("frame");
ma.setSize(new Dimension(500,300));
//ma.resize(200,200);
ma.setLayout(new GridLayout(2,1));
ma.launchapplet();
ma.launchapplet();
ma.show();
}
public Multi(String s){
super(s);
}
void launchapplet(){
Applet theApplet=new SimpleApplet();
add(theApplet);
theApplet.init();
theApplet.start();
}
}
說明:運行時,可先用JavaC命令編譯“SimpleApplet.java",然後將編譯後所得的“SimpleApplet.class"拷貝至“Multi.java"所在的目錄下。最後用JavaC命令編譯“Multi.java”,並用Java命令運行“Multi”即可。
通過上面的介紹,我們可以得出這樣一個結論:小應用程序(Applet)不僅僅只是用於嵌入互聯網網頁的有安全防護的應用程序,小應用程序(Applet)也是可以作為構件加入到其他的應用程序中去。我們既可以在main()方法裡完成小應用程序的實例化,也可在其他類中加載並運行一些小應用程序。這樣在很多應用程序的設計過程中,如果我們能把別處已有的對象拿來直接插入其中加以使用,那將是多麼有意義的事情!