当前位置:主页   - 电脑 - 程序设计 - JAVA
NetBeans Anagram Game 模块教程
来源:网络   作者:   更新时间:2012-08-16
收藏此页】    【字号    】    【打印】    【关闭

  安装软件

  开始之前,需要在您的计算机上安装以下软件:

  NetBeans IDE 5.0

  Java Standard Development Kit (JDK!") version 1.4.2或 5.0

  安装示例

  采用以下步骤来安装示例:

  解压缩附加的文件。

  在 IDE 中,选择 File>Open Project,然后浏览到包含已解压缩文件的文件夹。打开模块项目。其形式如下:

  NetBeans Anagram Game 模块教程

  右键单击项目节点并在 Target Platform 中选择 Install/Reload。将打开目标平台并安装该模块。

  注意到您拥有了一个新菜单:

  NetBeans Anagram Game 模块教程

  选择新菜单。打开 Anagram Game 以及 Projects 窗口、Files 窗口和 Runtime 窗口并以“explorer”模式停靠。

  玩游戏。

  知道了最终结果后,将从头开始创建模块,并且在创建的同时了解每个部分。

设置项目

  创建模块项目

  选择 File > New Project (Ctrl-Shift-N)。在 Categories 下,选择 NetBeans Plug-in Modules。在 Projects 下,选择 Module Project 并单击 Next。

  在 Name and Location 面板中,在 Project Name 中键入 AnagramPlugin。将 Project Location 更改为您计算机上的任何目录,如 c:mymodules。选择 Standalone Module 单选按钮和 Set as Main Project 复选框。单击 Next。

  在 Basic Module Configuration 面板中,将代码名称基础更改为 com.toy.anagrams。留出本地化包和 XML 层的位置,以便它们存储在名为 com/toy/anagrams 的包中。单击 Finish。

  IDE 创建 AnagramPlugin 项目。该项目包含所有资源和项目元数据,如该项目的 Ant 构建脚本。该项目在 IDE 中打开。您可以在 Projects 窗口 (Ctrl-1) 中查看其逻辑结构,在 Files 窗口 (Ctrl-2) 中查看其文件结构。例如,现在 Projects 窗口应该如下所示:

  NetBeans Anagram Game 模块教程

  有关以上每个文件的基本信息,请参阅 NetBeans 插件模块的快速入门指南。

重新实现 Anagram Game

  接下来,您需要获得与 IDE 一起打包的 NetBeans Anagram Game。拥有它之后,您将替换它的其中一个类,代替使用 JFrame,您需要使用 JComponent。然后,在以下部分中,您将添加一个扩展 Class TopComponent 的类和一个扩展 Class CallableSystemAction 的操作。

  选择 File > New Project (Ctrl-Shift-N)。在 Categories 下选择 Samples,然后选择 General。在 Projects 下,选择 Anagram Game 并单击 Next。接受默认值并单击 Finish。

  展开 AnagramGame 节点及其 Source Packages 节点。使用鼠标将 com.toy.angrams.lib 包和 com.toy.angrams.ui 包拖动到 AnagramPlugin 节点的 Source Packages 节点中。现在 Projects 窗口应该显示如下:

  NetBeans Anagram Game 模块教程

  展开 com.toy.anagrams.ui 包,右键单击 Anagrams.java,然后选择 Delete。单击此处下载组件版本的 Anagrams.java 并将其放置在 com.toy.anagrams.ui 包中。

  Anagrams.java 的组件版本和原始版本之间的区别如下:

  组件版本的 Anagrams.java 使用 JComponent 而不是 JFrame。

  由于组件停靠在不支持菜单栏的模式中,因此组件版本的 Anagrams.java 没有菜单栏。

  由于 Anagram Game 将是与 IDE 一起关闭的插件,因此,对于组件版本的 Anagrams.java 没有 exitMenuItemActionPerformed 和 exitForm。

  注意,您可以使用 IDE 来区分组件版本的 Anagrams.java 和它的原始版本。要完成此操作,请重新创建 Anagram Game,选择两个 Anagrams.java 文件,右键单击,然后在上下文菜单中选择 Tools > Diff。

停靠 Anagram Game

  使用 Window Component 向导

  右键单击 AnagramPlugin 项目节点并选择 New > Window Component。单击 Next。

  在 Basic Settings 面板中,选择 explorer 并选择 Open on Application Start。

  Basic Settings 面板应该如下所示:

  NetBeans Anagram Game 模块教程

  单击 Next。

  在 Name and Location 面板中,键入 AnagramGame 作为 Class Name Prefix 并浏览到作为新文件类型的图标的任何 16x16 像素的图像文件,如下所示。

  NetBeans Anagram Game 模块教程

  注意到在 NetBeans 安装目录中发现了几个 16x16 像素图像文件,例如,在以下位置:

  enterprise2jakarta-tomcat-5.5.7serverwebappsadminimages.

  对于本教程,只使用上面目录中的 Datasource.gif 图像。其形式如下: NetBeans Anagram Game 模块教程

  单击 Finish。

  现在 Projects 窗口应该显示如下:

  NetBeans Anagram Game 模块教程

  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.javat这是用于打开该窗口的操作类(单击该链接可以看到相关的 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:

  NetBeans Anagram Game 模块教程

  正常情况下您可以使用 Form Editor 来设计您的顶部组件。但在本例中,我们重新使用在本教程开始部分下载的组件版本的 Anagram.java 类。下一步将向您介绍如何执行该操作。

  在 Source Editor 中,向 AnagramGameTopComponent.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() 的行带有下划线并标记为错误,类似于以下说明。这是因为相关的包尚未得到声明。

  NetBeans Anagram Game 模块教程

  在 Source Editor 中,单击 Alt-Shift-F。com.toy.anagrams.ui.Anagrams 的 import 语句即被添加到该类的顶部。

  插件模块到此结束。接着,您需要安装和使用它。

构建和安装模块

  IDE 使用 Ant 构建脚本来构建和安装您的模块。构建o本是创建模块项目时为您创建的。

  安装 NetBeans 模块

  在 Projects 窗口,右键单击 AnagramPlugin 项目并在 Target Platform 中选择 Install/Reload。

  模块即在目标平台中构建和安装。目标平台打开,您可以试用新的模块。默认目标平台是由开发 IDE 的当前实例使用的安装。注意到当您运行模块时,您将使用临时测试用户目录,而不是开发 IDE 的用户目录。

使用模块

  在 IDE 的菜单栏中,您将在菜单栏的右侧位置看到新的菜单和菜单项以及 myicon.gif:

  NetBeans Anagram Game 模块教程

  选择该菜单项以调用 OpenAnagramAction.java 中的 performAction 方法。您将看到在“explorer”模式下嵌入的 Anagrams 示例:

  NetBeans Anagram Game 模块教程

创建可共享的二进制文件

  在 Projects 窗口中,右键单击 AnagramPlugin 项目,并选择 Create NBM。

  将创建 NBM 文件并且可以在 Files 窗口中查看它 (Ctrl-2):

  NetBeans Anagram Game 模块教程

  通过电子邮件使其他人也可以使用。

卸载模块

  关闭您安装模块时打开的 Platform 实例。

  在 Projects 窗口中右键单击该项目节点,并选择 Clean。现在,您将不再有安装在该 Platform 中的模块。

下一步

  有关更高级的教程,请参见以下资源:

  NetBeans System Properties 模块教程

  RSS Feedreader

  有关创建和开发 NetBeans 插件模块的更多信息,请参见以下资源:

  模块开发者资源

  NetBeans API 列表(当前开发版本)

  新的 API 支持建议

版本控制

  

  版本

  日期

  更改

1 2005 年 6 月 30 日 初始版本
2 2005 年 7 月 7 日

  添加了源代码和介绍如何下载和安装插件的介绍性部分。

  添加了原始版本和组件版本的 Anagrams.java 文件之间的区别列表。

  添加了关于使用 IDE 来区分原始版本和组件版本的 Anagrams.java 文件的说明。

  更正了 Action 类所需的 import 语句的列表。

  在 Bundle.properties 中添加了菜单和菜单项的本地化。

  在菜单栏中显示菜单序列。

  更改了最后两个屏幕截图以显示本地化、序列和 explorer 模式。

  添加了新部分:“以不同的模式停靠 NetBeans 插件模块”和“创建可共享的插件二进制文件”

  更正了对复制/粘贴错误 org.myorg.myfirstmodule 的一个错误参考。

3 2005 年 7 月 11 日

  “实现组件”部分的第一步中,在句子中添加了“AnagramPlugin”,以便用户更容易找到 com.toy.anagrams package。

  “AnagramProject”的两个实例更改为“AnagramPlugin”。

  添加了“leftSlidingSide”和“rightSlidingSide”模式。

4 2005 年 9 月 30 日

  由于 Window Component 向导的原因,全部进行了重新编写和彻底简化。

  

事件编号 描述 状态
1 代码和教程本身需要检查。 有待解决。
2 P1。在 New File 向导的 J2SE 示例类别中添加了有关组件版本的 anagrams.java 和原始版本之间的区别的解释。 有待解决。
3 P1。需要提供有关 topcomponent 的更多信息。模式、.wstcref 和 .settings 文件根本没有提到,需要添加。还需要解释“Serializable”。还需要添加有关“什么是模式?”、“什么是组件?”(可能还需要添加“什么是组?”)的信息。常见问题解答的链接。 有待解决。
4 P2。添加有关创建后任务部分:

  放在不同模式中。

  在 layer.xml 中其他位置的=列操作

有待解决。
5 P2。使用 TODO 窗口查找一些评论并添加一些代码。 有待解决。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明