文档

Java™ 教程
隐藏目录
Developing an Applet(开发小程序)
路径: 部署
课程: Java Applets
章节: 开始使用Applets

开发一个Applet

使用组件化架构设计的应用程序可以开发为Java小程序。以具有基于Swing的图形用户界面(GUI)的Java小程序为例。使用组件化设计,GUI可以使用较小的构建块或组件构建。以下是创建小程序GUI的一般步骤:

以下部分通过使用动态树示例小程序详细探讨了这些步骤。如果您对Swing不熟悉,请参阅使用Swing创建GUI以了解有关使用Swing GUI组件的更多信息。


注意:  如果您看不到示例运行,请在浏览器中启用JavaScript解释器,以使部署工具包脚本正常工作。

创建顶级JPanel

创建一个类,该类是JPanel的子类。这个顶级JPanel作为所有其他UI组件的容器。在下面的示例中,DynamicTreePanel类是最顶层的JPanelDynamicTreePanel类的构造函数调用其他方法来正确创建和布局UI控件。

public class DynamicTreePanel extends JPanel implements ActionListener {
    private int newNodeSuffix = 1;
    private static String ADD_COMMAND = "add";
    private static String REMOVE_COMMAND = "remove";
    private static String CLEAR_COMMAND = "clear";
    
    private DynamicTree treePanel;

    public DynamicTreePanel() {
        super(new BorderLayout());
        
        //创建组件。
        treePanel = new DynamicTree();
        populateTree(treePanel);

        JButton addButton = new JButton("添加");
        addButton.setActionCommand(ADD_COMMAND);
        addButton.addActionListener(this);
        
        JButton removeButton = new JButton("删除");
        
        // ...
        
        JButton clearButton = new JButton("清除");
        
        // ...
        
        //布局所有内容。
        treePanel.setPreferredSize(
            new Dimension(300, 150));
        add(treePanel, BorderLayout.CENTER);

        JPanel panel = new JPanel(new GridLayout(0,3));
        panel.add(addButton);
        panel.add(removeButton); 
        panel.add(clearButton);
        add(panel, BorderLayout.SOUTH);
    }
    // ...
}

创建Applet

对于具有基于Swing的GUI的Java Applet,创建一个继承自javax.swing.JApplet的子类。不包含Swing-based GUI的Applet可以扩展java.applet.Applet类。

重写Applet的init方法,实例化您的顶级JPanel类并创建Applet的GUI。 DynamicTreeApplet类的init方法在AWT事件调度线程中调用createGUI方法。

package appletComponentArch;

import javax.swing.JApplet;
import javax.swing.SwingUtilities;

public class DynamicTreeApplet extends JApplet {
    //当此applet加载到浏览器中时调用。
    public void init() {
        //在事件调度线程上执行一个任务;创建此applet的GUI。
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    createGUI();
                }
            });
        } catch (Exception e) { 
            System.err.println("createGUI没有成功完成");
        }
    }
    
    private void createGUI() {
        //创建并设置内容面板。
        DynamicTreePanel newContentPane = new DynamicTreePanel();
        newContentPane.setOpaque(true); 
        setContentPane(newContentPane);        
    }        
}

将核心功能与最终部署机制分开的好处

创建Applet的另一种方法是只需删除抽象层(单独的顶级JPanel)并在Applet的init方法中布局所有控件。直接在Applet中创建GUI的缺点是,如果以后选择将功能部署为Java Web Start应用程序,则部署将更加困难。

在Dynamic Tree Demo示例中,核心功能位于DynamicTreePanel类中。现在,将DynamicTreePanel类放入JFrame中并部署为Java Web Start应用程序非常简单。

因此,为了保持可移植性并保持部署选项的开放性,请按照本页面所述的基于组件的设计方法。

下载源代码Dynamic Tree Demo Applet

上一页: Applet的执行环境
下一页: 部署Applet