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

  本教程主要是为了演示 NetBeans Node API 的各个方面。它介绍如何实现以下内容:

  如何添加、重命名和删除节点

  如何显示子节点

  如何更改节点列表

  如何创建属性表

  如何指定属性

  如何执行其他常用任务

  由于 NetBeans Node API 是最普遍的 API 之一,并且反应了存在节点依存关系的信息,因此,本示例很重要。您通过该实时信息的界面进行交互。

  安装完软件之后,本教程可以在 60 分钟之内完成。

  有关使用 NetBeans 模块的详细信息,请参阅 NetBeans 网站上的 NetBeans Development Project 主页。如果有问题,请访问 NetBeans Developer FAQ 或使用本页顶部的反馈链接。

  了解示例

  开始编写插件模块之前,必须确保您具备所有必要的软件。此外,您可能想在亲自构建之前使用示例。了解示例介绍在本教程的其余部分您所要做的事项。

  安装软件

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

  NetBeans IDE Dev(下载)

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

  安装示例

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

  解压缩附加的文件。

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

NetBeans System Properties 模块教程

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

  介绍示例

  打开 Runtime 窗口 (Ctrl-5),注意到您拥有一个具有很多(大约 50 个)子节点的新节点,每个子节点都根据特定 Java 属性进行了标记。当您右键单击主节点和子节点时,将出现上下文菜单项:

NetBeans System Properties 模块教程NetBeans System Properties 模块教程

  对于子节点,Java 运行时的一般属性用于配置基本机理,如搜索字体的路径、Java 虚拟机 (JVM) 的位置、默认语言环境等等。通常是字符串键,类似于 name.name.name 以及关联的字符串值。可以从 Java 语言中查询或设置这些值。此外,可以使用它们设置 JVM 启动时的默认值。当展开 System Properties 节点时,每个键对应显示一个节点,而根据每个键对每个节点都进行了标记。例如:

  例如,值 java.vm.vendor 可能显示 Sun Microsystems, Inc.。

  值 path.separator 可能显示分号(取决于您的配置)。

  值 user.language 可能显示值 English(取决于您的配置)。

  使用示例:

  显示属性表。 右键单击子节点并选择 Properties。显示属性表和一个包含两个属性的 Properties 选项卡。第一个属性标签为 Name,它提供与该节点(键)相同的名称;另一个属性标签为 Value,显示属性的字符串值。

  重命名属性。 单击子节点,然后再次单击它。这样您可以在合适的位置重命名键,从而保持相同的值。也可以单击属性表中的 Name 属性或者右键单击子节点并选择 Rename。

  更改值。 单击属性表中的 Value 选项卡并键入新的值。这会将系统属性重置为所输入的值。

  添加属性。右键单击主 System Properties 节点,然后选择 Add System Property。这样能向列表中添加新系统属性。

  删除属性。 选择属性并按 Delete。这样将移除该属性。

  刷新列表。右键单击 System Properties 节点,然后选择 Refresh_PB_PB_PB_PB_PB_PB_PB。这会提示该模块重新检查值,并根据需要刷新列表。

  介绍源

  System Properties 示例由主文件和支持文件组成。

  主文件。 该模块的主文件是 Java 类(在下图中选中的类):

NetBeans System Properties 模块教程

  下面按照字母顺序介绍 Java 类:

文件描述
AllPropsChildren.java该子对象负责跟踪 System Properties 节点下的节点列表。当第一次询问该列表时,它检索所有系统属性并让该节点实现来跟踪所有系统属性名称。执行此操作的接口是名为 Children 的类。
AllPropsNode.java该节点指定它下面的子节点,并要求使用 AllPropsChildren 来跟踪子节竦牧斜怼8媚?榉浅W⒁庹庑┦孪睿如它的上下文菜?
OnePropNode.java这是代表单个属性的节点,它是 AbstractNode。它的构造方法要求用户以字符串的形式提供键。对于每个系统属性名称,使用 OnePropNode 来显示。当用户展开系统属性节点时,它构建键的列表,然后创建相应数量的 OnePropNodes。每个 OnePropNode 显示一个键,不直接与它的父节点交互 -- 它的知识仅限于单个系统属性和如何处理它,以及在有更改时通知 PropertiesNotifier。这种设计更容易重新使用此类节点,包括将它们放置在其他上下文中。
PropertiesNotifier.java在有更改(包括添加、删除或重命名属性)时或属性值更改时管理路由事件。
Refresh_PB_PB_PB_PB_PB_PB_PBPropsAction.java该操作出现在 System Properties 下的弹出菜单中,标签为 Refresh_PB_PB_PB_PB_PB_PB_PB。它强制进行刷新,基于系统属性的最新状态更新信息显示。

  支持文件。 该模块的支持文件位于 org.myorg.systemproperties 包以及 Important Files 节点(在下图中选中的节点)中:

NetBeans System Properties 模块教程

  下面按照字母顺序介绍 org.myorg.systemproperties 包中的支持文件:

文件描述
allPropsIcon.gifSystem Properties 节点的图标。
Bundle.properties这是标准 Java 属性文件,它使用语法 Key=Value。键是出现在源代码中内容的代码名称,它的值表示将向用户显示的内容。该文件对于本地化特别有用。例如,通过创建 Bundle_ja.properties 之类的属性文件并用日语填写所有值,该模块在用户以日语模式运行 IDE 时将自动用日语显示所有内容。
layer.xml在 Runtime 窗口中将 AllPropsNode.java 注册为一个节点。
onePropIcon.gif子节点的图标。

  按照文件出现在 Projects 窗口中的顺序介绍 Important Files 节点中的文件:

文件描述
模块清单(Module Manifest)将项目声明为模块。
构建脚本包含 Ant 目标,用于构建项目。
项目元数据包含项目元数据,如项目的依存关系。
项目属性包含项目属性。
NetBeans Platform 配置包含平台属性。
每用户 NetBeans Platform 配置包含特定用户的属性。

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

  设置模块项目

  开始编写模块前,必须确保正确地设置了项目。NetBeans IDE Dev 提供一个向导,用于设置模块所需的所有基本文件。

  创建模块项目

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

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

  在 Basic Module Configuration 面板中,用 myorg 替换 Code Name Base 中的 yourorghere 并将“System Properties”更改为“systemproperties”,从而整个 Code Name Base 为 org.myorg.manifestfiletype。在 Module Display Name 中填入 System Properties。留出本地化包和 XML 层的位置,以便它们存储在名为 org.myorg.systemproperties 的包中。单击 Finish。

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

NetBeans System Properties 模块教程

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

  指定模块的依存关系

  您需要将几个属于 NetBeans API 的类设为子类。每个类都将被声明为 Module 依存关系。使用 Project Properties 对话框来执行此操作。

  在 Projects 窗口中,右键单击 System Properties 项目,然后选择 Properties。在 Project Properties 对话框中,单击 Libraries,然后单击 Add...。现在应该看到下图:

NetBeans System Properties 模块教程

  对于以下每个 API,在 Libraries 面板中,单击“Add...”,从 Module 列表中选择名称,然后单击 OK 确认:

  Actions API

  对话框 API

  节点 API </p>

  实用工具 API

  Window 系统 API

  单击 OK,退出 Project Properties 对话框。

  在 Projects 窗口中,双击 Project Metadata 并注意您选择的 API 是否声明为模块依存关系:

  创建主文件

  模块的 meat 由它的 Java 类提供。在本部分中您将创建并检查它们:

  AllPropsNode.java

  PropertiesNotifier.java

  AllPropsChildren.java

  OnePropNode.java

  Refresh_PB_PB_PB_PB_PB_PB_PBPropsAction.java

  AllPropsNode.java

  执行以下操作:

  创建文件。右键单击 org.myorg.systemproperties 节点,然后选择 New > File/Folder。在 Categories 下选择 Java Classes。在 File Types 下,选择 Java Class。单击 Next 并在 Class Name 中键入 AllPropsNode。单击 Finish。新 Java 类将在 Source Editor 中打开。用此处的代码替换默认代码。

  理解文件。 该 Java 类指定主节点下的子节点,并要求使用 AllPropsChildren 来跟踪子节点的列表。该模块非常注意这些事项,如它的上下文菜单。

  下面是该类的解释:

  public class AllPropsNode extends AbstractNode。AbstractNode 是一个普通的 Node 子类。节点是抽象类,AbstractNode 是可以自定义的普通实现。

  private static ResourceBundle bundle = NbBundle.getBundle(AllPropsNode.class)。为该类的所有本地化文本加载 Bundle.properties 文件。该类的其余部分使用变量包获得所有本地化的文本。注意其他类的功能相似。

  构造方法:

  public AllPropsNode。在创建该代码时,它首先调用超类 -- 即 超类 (AbstractNode) 的构造方法。这会增加 AbstractNode 的基础架构,并显示必须提供子对象以便使用。该对象代表节点的子对象列表,为了更清晰创建一个单独的类:AllPropsChildren。

  setIconBase。指定关联图标的位置。

  setName。设置内部名称。这通常是随意的,但是理想情况下应该在成员中是唯一的。

  setDisplayName。设置显示给用户的名称。它默认为内部名称,但是最好将其设置为已本地化的内容。

  setShortDescription。设置关联的工具提示。这是一个重写的方法,指定将放入节点上下文菜单的内容。

  方法:

  getActions。以下是将在菜单中显示的操作列表,在菜单项之间用分隔符进行分隔。使用以下方法:

  Refresh_PB_PB_PB_PB_PB_PB_PBPropsAction 是在另一个源文件中定义的操作

  NewAction 能够创建新的子节点或键值对

  OpenLocalExplorerAction 允许用户使新的 Explorer 窗口只显示系统属性

  ToolsAction 和 PropertiesAction 都是大多数节点应该具有的标准操作。

  getHelpCtx。为上下文帮助提供 IDE 键。当为该模块构建上下文帮助时,使用该方法将特定节点与特定帮助字符串关联。

  cloneNode。创建节点的一个新副本,它使 IDE 的其他部分显示 System Properties 列表的单独副本,而不是 Runtime 选项卡。这比后退实现更高效,它是要代表原始节点。

  getNewTypes。返回 NewType 对象的列表。当上下文菜单中存在 NewAction 时,该操作显示该节点中与每个 NewTypes 对应的菜单项。该操作提供实际的 GUI,如显示子菜单。您指定抽象的定义并生成新对象。在本例中,只返回一个 NewType,因为只有一个合理创建的类型(新系统属性);但是可以返回多个 NewType,它们将显示在子菜单中。该方法之后是菜单项上的名称定义(如 New System Property)和帮助上下文。

  create。创建新对象。在本例中,将有 key-in 值的对话框。

  NotifyDescriptor.InputLine。一个小对话框的r述,具有单个文本条目弹出菜单、对话框的标题和一条消息。

  DialogDisplayer.getDefault().notify(desc)。将全部内容显示在弹出对话框中。

  getInputText。检索键的用户输入。

  再次使用 DialogDisplayer.getDefault 和 getInputText 对值执行相同的操作。

  接下来从 Java API 中调用 System.setProperty 设置系统属性。

  最后,调用另一个类 PropertiesNotifier.changed(下一步所创建的类)指示其他类和 Module 组件当前系统属性的设置已经更改并且需要更新。例如,可能有一个新属性或者一个现有值已经更改。

  PropertiesNotifier.java

  执行以下操作:

  创建文件。 右键单击 org.myorg.systemproperties 节点,选择 New > Java Class,并在 Class Name 中键入 PropertiesNotifier。单击 Finishm新 Java 类将在 Source Editor 中打开。用此处的代码替换默认代码。

  理解文件。 在有更改(包括添加、删除或重命名属性)时或属性值更改时该 Java 类管理路由事件。您还可以将其视为帮助程序例程,非常类似于具有附带事件集的 JavaBeans 组件。但是,它不是严格的 JavaBeans 组件,该类没有实例,但是使用它的静态方法和 JavaBeans 实例方法一样。

  为该类定义的方法如下:

  changed。对正在侦听的进程激发一个事件。显示基于系统属性的信息的每个组件必须侦听这些事件,并根据需要更新它们的显示。

  addChangeListener 和 removeChangeListener。让组件将它们自己注册为这些事件的侦听器。具有显示状态的进程可以向该类添加 ChangeListener。为了确保正确更新,影响状态的进程调用 changed。

  AllPropsChildren.java

  执行以下操作:

  创建文件。 右键单击 org.myorg.systemproperties 节点,选择 New > Java Class,并在 Class Name 中键入 AllPropsChildren。单击 Finish。新 Java 类将在 Source Editor 中打开。用此处的代码替换默认代码。

  理解文件。该 Java 类负责跟踪 System Properties 节点下的节点列表。当第一次询问该列表时,它检索所有系统属性并让该节点实现来跟踪所有系统属性名称。执行此操作的抽象类名为 Children。

  在本示例中,使用名为 Children.Keys 的常用子实现。通过将 Children.Keys 设为子类,您不需要显式跟踪节点,该实现可以执行该操作。相反,您跟踪键集,它是较轻量级的对象。通常每个键代表一个节点。您必须告诉实现如何为每个键创建一个节点。您可以自己决定使用什么类型的键。

  在本示例中,键是系统属性的名称。

  实现 Children.Keys 时应该定义的重要方法包括:

  addNotify。平台第一次需要节点列表时调用。比如当展开 System Properties 节点时。调用 addNotify 时,它调用帮助程序方法 refreshList 来确定键,然后它使用 PropertiesNotifier 注册自己,要求通知任何系统属性的更改。如果存在这样的更改,则将刷新该列表。

  removeNotify。当用户折叠 System Properties 节点并开始在其他节点上工作时调用。平台将注意到不再需要节点列表,并且它将释放不再使用的内存。注意到即刻折叠节点将不会触发该调用。调用 removeNotify 时,它移除侦听器,因为它不再对接收通知感兴趣。此外,用空的设置调用 setKeys。Children.Keys 定义了该方法以供子类使用。

  createNodes。需要构造子节点时由实现调用。它被传递给正在生成节点的键。根据键显示的内容,它可能不返回节点、返回一个节点或返回多个节点。在本示例中,将创建一个属性节点的新实例,并且将系统属性名称传递到它的构造方法中。

  refreshList。System.getProperties 调用检索系统中当前定义的所有属性。该调用遍历所有属性名称,保留并对该列表进行排序。与该列表一起调用 setKeys,使子节点出现,每个系统属性一个(按照属性名称排序)。

  OnePropNode.java

  执行以下操作:

  创建文件。 右键单击 org.myorg.systemproperties 节点,选择 New > Java Class,并在 Class Name 中键入 OnePropNode。单击 Finish。新 Java 类将在 Source Editor 中打开。用此处的代码替换默认代码。

  理解文件。 该 Java 类为单个属性提供 AbstractNode 实现。它的构造方法要求一个字符串键。该类显示一个系统属性名称。当用户展开系统属性节点时,它构建键的列表,然后创建相应数量的 OnePropNodes。每个 OnePropNode 显示一个键,但不与它的父节点直接进行交互,它的知识仅限于单个系统属性和如何处理它,以及在有更改时通知 PropertiesNotifier。这种设计更容易重新使用此类节点,包括将它们放置在其他上下文中。

  下面是该类的解释:

  public class OnePropNode extends AbstractNode。AbstractNode 是一个普通的 Node 子类。节点是抽象类,AbstractNode 是可以自定义的普通实现。

  private static ResourceBundle bundle = NbBundle.getBundle(AllPropsNode.class)。为该类的所有本地化文本加载 Bundle.properties 文件。该类的其余部分使用变量包获得所有本地化的文本。

  构造方法:

  super(Children.LEAF)。告诉节点的层次这是一个将不需要扩展并且没有任何子节点的叶节点。然后它存储键并设置图标。

  setDefaultAction。设置如果双击该节点或执行类似用户操作时默认情况下运行的操作。在本示例中,默认的操作是弹出属性表。

  super.setName(key)。设置键的名称。使用继承的版本设置节点名称(它不会重命名实际的属性)。

  setShortDescription。设置关联的工具提示。这是一个重写的方法,指定将放入节点上下文菜单的内容。

  方法:

o createSheet。配置属性表的外观。这将在属性表中创建选项卡列表以及属性列表。在需要r示属性列表前m会掠?createSheet。

  super.createSheet。确保存在一个要启动的表。

  sheet.get (Sheet.PROPERTIES)。检查是否有名为 Properties 的选项卡。如果没有,Sheet.createPropertiesSet 生成一个。注意,Sheet 是指节点的整个属性列表,并且 Sheet.Set 是属性表中的一个选项卡。

  PropertySupport.Name。创建反映节点名称的 Name 属性。代码已经将节点名称与系统属性名称同步。

  ValueProp。是一个内部类,为本示例创建的自定义属性。PropertySupport.ReadWrite 是用于输入和查看值的基本类。超调用为用户提供属性的代码名称、显示名称以及工具提示。

  getValue。查看系统属性。

  setValue。为系统属性设置新值并通知其他值已更改的进程。

  向属性表添加属性以及 ChangeListener,它侦听系统属性中的更改,这意味着该特定属性已更改。如果正确,则 firePropertyChange 节点将激发一个更改,指示它的属性表中的某个属性不再有效,检查并进行相应地更新。注意,属性的名称为 value,它与创建 ValueProp 时指定的内部名称相匹配。

  finalize。该类被破坏时调用,只要节点被破坏就移除 ChangeListener。

  canRename。返回 true,允许重命名节点。

  setName。重命名节点时调用,如从重命名操作、从 Explorer 或从属性表的 Name 属性中进行重命名时。该操作检索所有系统属性以及关联的值,移除键、添加具有新名称和值的新属性,并设置系统属性。该操作还通知所有已更改的相关属性,但是它不直接重命名自身(参见 AllPropsChildren)。

  canDestroy。提供删除该节点的权限。

  destroy。检索系统属性,移除它的键,设置回属性并通知所有相关的更改。注意,该 destroy 方法并不移除节点,它只移除系统属性并通知感兴趣的各方该属性已移除。实际上该节点随后被 AllPropsChildren 移除。AllPropsChildren 意识到该属性不再存在,并且创建不再包括该属性的一组新键。然后 Children.Keys 实现自动移除该节点。执行该操作以反映系统的实际状态。

  Refresh_PB_PB_PB_PB_PB_PB_PBPropsAction.java

  执行以下操作:

  创建文件。 右键单击 org.myorg.systemproperties 节点,选择 New > Java Class,并在 Class Name 中键入 Refresh_PB_PB_PB_PB_PB_PB_PBPropsAction。单击 Finish。新 Java 类将在 Source Editor 中打开。用此处的代码替换默认代码。

  理解文件。 该 Java 类提供当用户选择 Refresh_PB_PB_PB_PB_PB_PB_PB 时在 System Properties 下的弹出菜单中出现的操作。它强制进行刷新,基于系统属性的最新状态更新信息显示。它是 CallableSystemAction 并且始终启用,但是对选择的内容不敏感。原则上,可以将其放置在工具栏(但是由于它对用户不那么重要,因此这里将它保留在此处的弹出菜单中)上。

  实现 CallableSystemAction 时应该定义的重要方法包括:

  performAction。调用 PropertiesNotifier.changed 指示其他类和 Module 组件当前系统属性的设置已经更改并且需要更新。例如,可能已经添加了一个新属性或者已经更改了一个现有值。

  getName。从 Bundle.properties 中获得操作标签的名称

  getHelpCtx。为上下文帮助提供 IDE 键。当为该模块构建上下文帮助时,使用该方法将特定节点与特定帮助字符串关联。

  设置支持文件

  已经编写了主文件的代码之后,您必须指定模块影响文件系统的方式以及您想向用户显示的标签和文本。layer.xml 文件和 Bundle.properties 文件正是用于这个目的的。

  在 Runtime 窗口中注册节点

  在 layer.xml 文件中的 标记之间添加以下条目:<folder name="UI">
 <folder name="Runtime">
   <file name="org.myorg.systemproperties.AllPropsNode.instance" />  
 </folder>
</folder>

  保存文件。

  本地化模块

  将以下属性添加到 Bundle.properties 文件:LBL_AllPropsNode=System Properties
HINT_AllPropsNode=Shows all currently set system properties.
LBL_NewProp=System Property
LBL_NewProp_dialog=Create New Property
MSG_NewProp_dialog_key=New property name:
MSG_NewProp_dialog_value=New property value:
HINT_OnePropNode=Represents one system property.
PROP_value=Value
HINT_value=Value of this system property.
LBL_Refresh_PB_PB_PB_PB_PB_PB_PBProps=Refresh_PB_PB_PB_PB_PB_PB_PB
LBL_MyOwnActionProps=My Own Action

  保存文件。

  获得图标

  您可以使用任何所需的 16x16 图标,只要它们命名为 allPropsIcon.gif 和 onePropIcon.gif 即可。或者,从本教程附带的 ZIP 文件中获得图标。注意,AllPropsNode.java 和 OnePropNode.java构造方法中的 setIconBase 语句设置图标的位置。

  构建和安装模块

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

  安装 NetBeans 模块

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

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

  使用 NetBeans 模块

  在 IDE 的 Runtime 窗口 (Ctrl-5) 中,您应该看到新节点及其很多子节点:

NetBeans System Properties 模块教程

  按照介绍示例所述使用模块。

其它资源
来源声明

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