Applet加载Java应用程序
如何编写小应用程序(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 SimpleApplet 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.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()方法里完成小应用程序的实例化,也可在其他类中加载并运行一些小应用程序。这样在很多应用程序的设计过程中,如果我们能把别处已有的对象拿来直接插入其中加以使用,那将是多么有意义的事情!