当前页面: 开发资料首页 → Netbeans 专题 → NetBeans Anagram Game 模块教程
摘要: NetBeans Anagram Game 模块教程 反馈 本教程演示 NetBeans Windows API 的各个方面。它介绍如何在 IDE 中通过顶部组件停靠或嵌入 NetBeans Anag...
本教程演示 NetBeans Windows API 的各个方面。它介绍如何在 IDE 中通过顶部组件停靠或嵌入 NetBeans Anagram Game。顶部组件可能与单个窗口相对应,但是也可能与窗口中的选项卡相对应。可以停靠或取消停靠、拥有选定的节点、提供操作并提供其他支持功能。有关顶部组件的技术详细信息,请参阅 Class TopComponent(位于 NetBeans API 列表中)。
本教程将介绍以下主题:
有关使用 NetBeans 插件模块的详细信息,请参阅 NetBeans 网站上的 NetBeans Development Project 主页。如果有问题,请访问 NetBeans Developer FAQ 或使用本页顶部的反馈链接。
开始之前,需要在您的计算机上安装以下软件:
采用以下步骤来安装示例:
注意到您拥有了一个新菜单:
知道了最终结果后,将从头开始创建模块,并且在创建的同时了解每个部分。
IDE 创建 AnagramPlugin 项目。该项目包含所有资源和项目元数据,如该项目的 Ant 构建脚本。该项目在 IDE 中打开。您可以在 Projects 窗口 (Ctrl-1) 中查看其逻辑结构,在 Files 窗口 (Ctrl-2) 中查看其文件结构。例如,现在 Projects 窗口应该如下所示:
有关以上每个文件的基本信息,请参阅 NetBeans 插件模块的快速入门指南。
接下来,您需要获得与 IDE 一起打包的 NetBeans Anagram Game。拥有它之后,您将替换它的其中一个类,代替使用 JFrame,您需要使用 JComponent。然后,在以下部分中,您将添加一个扩展 Class TopComponent 的类和一个扩展 Class CallableSystemAction 的操作。
Anagrams.java 的组件版本和原始版本之间的区别如下:
注意,您可以使用 IDE 来区分组件版本的 Anagrams.java 和它的原始版本。要完成此操作,请重新创建 Anagram Game,选择两个 Anagrams.java 文件,右键单击,然后在上下文菜单中选择 Tools > Diff。
Basic Settings 面板应该如下所示:
单击 Next。
注意到在 NetBeans 安装目录中发现了几个 16x16 像素图像文件,例如,在以下位置:
enterprise2\jakarta-tomcat-5.5.7\server\webapps\admin\images.
对于本教程,只使用上面目录中的 Datasource.gif 图像。其形式如下:
现在 Projects 窗口应该显示如下:
IDE 在 com.toy.anagrams 中创建 AnagramGameTopComponent.java 并在 Source Editor 中打开它。这是您应该看到的(单击该链接可以看到相关的 NetBeans API Javadoc):
package com.toy.anagrams; import java.awt.BorderLayout; import java.awt.Dimension; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; import org.openide.util.NbBundle; import org.openide.util.RequestProcessor; import org.openide.util.Utilities; import org.openide.windows.TopComponent; /** * Top component which displays something. */ final class AnagramGameTopComponent extends TopComponent { private static final long serialVersionUID = 1L; private static AnagramGameTopComponent instance; private AnagramGameTopComponent() { initComponents(); setName(NbBundle.getMessage(AnagramGameTopComponent.class, "CTL_AnagramGameTopComponent")); setToolTipText(NbBundle.getMessage(AnagramGameTopComponent.class, "HINT_AnagramGameTopComponent")); setIcon(Utilities.loadImage("com/toy/anagrams/Datasource.gif", true)); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ //private void initComponents() { setLayout(new java.awt.BorderLayout()); } // // Variables declaration - do not modify // End of variables declaration /** * Gets default instance. Don't use directly, it reserved for '.settings' file only, * i.e. deserialization routines, otherwise you can get non-deserialized instance. */ public static synchronized AnagramGameTopComponent getDefault() { if (instance == null) { instance = new AnagramGameTopComponent(); } return instance; } public int getPersistenceType() { return TopComponent.PERSISTENCE_ALWAYS; } public void componentOpened() { // TODO add custom code on component opening } public void componentClosed() { // TODO add custom code on component closing } /** replaces this in object stream */ public Object writeReplace() { return new ResolvableHelper(); } protected String preferredID() { return "AnagramGameTopComponent"; } final static class ResolvableHelper implements Serializable { private static final long serialVersionUID = 1L; public Object readResolve() { return AnagramGameTopComponent.getDefault(); } } }
IDE 还创建 AnagramGameAction.java。这是用于打开该窗口的操作类(单击该链接可以看到相关的 NetBeans API Javadoc):
package com.toy.anagrams; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.ImageIcon; import org.openide.ErrorManager; import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; /** * Action which shows AnagramGame component. */ public class AnagramGameAction extends AbstractAction { public AnagramGameAction() { putValue(NAME, NbBundle.getMessage(AnagramGameAction.class, "CTL_AnagramGameAction")); putValue(SMALL_ICON, new ImageIcon(Utilities.loadImage("com/toy/anagrams/Datasource.gif", true))); } public void actionPerformed(ActionEvent evt) { TopComponent win = WindowManager.getDefault().findTopComponent("AnagramGameTopComponent"); if (win == null) { ErrorManager.getDefault().log(ErrorManager.WARNING, "Cannot find AnagramGame component."); return; } win.open(); win.requestActive(); } }
IDE 将在 layer.xml 文件中作为菜单项和工具栏按钮注册 action 类:
<filesystem> <folder name="Actions"> <folder name="Window"> <file name="com-toy-anagrams-AnagramGameAction.instance"/> </folder> </folder> <folder name="Menu"> <folder name="Window"> <file name="AnagramGameAction.shadow"> <attr name="originalFile" stringvalue="Actions/Window/com-toy-anagrams-AnagramGameAction.instance"/> </file> </folder> </folder> <folder name="Windows2"> <folder name="Components"> <file name="AnagramGameTopComponent.settings" url="AnagramGameTopComponent.xml"/> </folder> <folder name="Modes"> <folder name="explorer"> <file name="AnagramGameTopComponent.wstcref" url="AnagramGameTopComponent_1.xml"/> </folder> </folder> </folder> </filesystem>
当您打开 AnagramGameTopComponent.java 时,单击 Design,将打开 Form Editor:
正常情况下您可以使用 Form Editor 来设计您的顶部组件。但在本例中,我们重新使用在本教程开始部分下载的组件版本的 Anagram.java 类。下一步将向您介绍如何执行该操作。
protected void initAnagrams(){ new Anagrams(this); }
然后更改构造函数以便调用新的方法:
private AnagramGameTopComponent() { initAnagrams(); setName(NbBundle.getMessage(AnagramGameTopComponent.class, "CTL_AnagramGameTopComponent")); setToolTipText(NbBundle.getMessage(AnagramGameTopComponent.class, "HINT_AnagramGameTopComponent")); setIcon(Utilities.loadImage("com/toy/anagrams/Datasource.gif", true)); }
调用 initAnagrams() 的行带有下划线并标记为错误,类似于以下说明。这是因为相关的包尚未得到声明。
在 Source Editor 中,单击 Alt-Shift-F。com.toy.anagrams.ui.Anagrams 的 import 语句即被添加到该类的顶部。
插件模块到此结束。接着,您需要安装和使用它。
IDE 使用 Ant 构建脚本来构建和安装您的模块。构建脚本是创建模块项目时为您创建的。
模块即在目标平台中构建和安装。目标平台打开,您可以试用新的模块。默认目标平台是由开发 IDE 的当前实例使用的安装。注意到当您运行模块时,您将使用临时测试用户目录,而不是开发 IDE 的用户目录。
将创建 NBM 文件并且可以在 Files 窗口中查看它 (Ctrl-2):
有关更高级的教程,请参见以下资源:
有关创建和开发 NetBeans 插件模块的更多信息,请参见以下资源:
版本
|
日期
|
更改
|
1 | 2005 年 6 月 30 日 | 初始版本 |
2 | 2005 年 7 月 7 日 |
|
3 | 2005 年 7 月 11 日 |
|
4 | 2005 年 9 月 30 日 |
|
事件编号 | 描述 | 状态 |
1 | 代码和教程本身需要检查。 | 有待解决。 |
2 | P1。在 New File 向导的 J2SE 示例类别中添加了有关组件版本的 anagrams.java 和原始版本之间的区别的解释。 | 有待解决。 |
3 | P1。需要提供有关 topcomponent 的更多信息。模式、.wstcref 和 .settings 文件根本没有提到,需要添加。还需要解释“Serializable”。还需要添加有关“什么是模式?”、“什么是组件?”(可能还需要添加“什么是组?”)的信息。常见问题解答的链接。 | 有待解决。 |
4 | P2。添加有关创建后任务部分:
|
有待解决。 |
5 | P2。使用 TODO 窗口查找一些评论并添加一些代码。 | 有待解决。 |