corner imagecorner image FeaturesPluginsDocs & SupportCommunityPartners


NetBeans 平台快速入门

欢迎使用 NetBeans 平台!

本教程简要地向您介绍 NetBeans 平台工作流,演示了创建一个简单 HTML 编辑器的过程。创建的 HTML 编辑器尽管简单,但是功能非常成熟,因为它将重用 NetBeans 平台提供的基础结构。例如,无需任何编码,您的 HTML 编辑器即可拥有一个成熟的窗口系统。完成本教程后,您将基本掌握如何在 NetBeans 平台创建、构建和运行应用程序。

完成本教程后,您可以继续参阅 NetBeans Platform learning trail(NetBeans 平台学习资源)。该学习资源提供了综合性教程,这些教程重点介绍适用各种应用程序类型的一系列 NetBeans API。如果您不希望创建 "Hello World" 应用程序,则可以跳过本教程,而直接阅读学习资源。

注意:本文档针对的是 NetBeans IDE 6.5 发行版。如果使用的是早期版本,请参见本文档的 6.1 版。如果要了解如何创建 NetBeans 插件而不是 NetBeans 平台应用程序,请参见 NetBeans 插件快速入门。

目录

本页上的内容适用于 NetBeans IDE 6.5

要学习本教程,您需要具备下表中列出的软件和资源。

软件或资源 要求的版本
NetBeans IDE 版本 6.5
Java Developer Kit (JDK) 版本 6 或
版本 5

(可选)要解决疑难问题,可以下载完整的样例并查看其源代码。

在本教程结束时,您的 HTML 编辑器将如下图所示:

完成的 HTML 编辑器

注意:尽管这是一个非常简单的演示程序,但请您认真对待。这是一个真正的程序,通过该程序可轻松编辑 HTML 页,并且它还具有代码完成、验证和预定义 HTML 片断的功能。

本教程所创建的 HTML 编辑器是一个“在 NetBeans 平台上”构建的富客户端应用程序。这意味着 IDE 的核心,也就是 NetBeans 平台,将是您应用程序的基础。在 NetBeans 平台上,添加所需的模块,并且排除 IDE 需要但应用程序不需要的模块。下面您将看到 NetBeans 平台(应用程序的基础)中添加的一些 IDE 模块:

NetBeans 平台应用程序的结构

创建该 HTML 编辑器需要生成应用程序框架,排除您不需要的模块和用户界面项,然后将 Favorites 窗口设置为 IDE 启动时缺省打开的窗口。IDE 用户界面元素支持所有这些活动。

您将看到构建过程多么简单、多么容易,更确切地说是在 NetBeans 平台上组装一个功能全面的应用程序。最后,我们将向您介绍如何使最终产品可以方便地通过 WebStart 下载和启动。

注意:虽然 NetBeans 平台是一个独立的产品,但不必为了学习本教程而单独下载它。我们将在 IDE 中开发富客户端应用程序,然后排除与 IDE 相关但对于您的应用程序来说是多余的模块。

生成主干应用程序

在 NetBeans 平台上创建应用程序时,首先需要创建 NetBeans 平台Application 项目。缺省的模块 NetBeans 平台Application 项目包括 NetBeans 平台中的所有模块和 NetBeans IDE 中的所有模块。由于我们并不需要所有模块,因此我们将排除不需要的模块。

  1. 使用 New Project (Ctrl-Shift-N) 向导,从 NetBeans 模块类别中的模板创建 NetBeans 平台Application Project,如下所示。
  2. 新建项目向导

    单击“下一步”并将 NetBeans 平台Application 项目命名为 "NetBeansHTMLEditor"。单击“完成”。

  3. 右键单击项目节点,选择“属性”选项,然后在 NetBeans 平台 Application 的“项目属性”对话框中做少量更改:

    • 在“构建”面板中,单击“创建独立应用程序”,指定在 NetBeans 平台上生成富客端户应用程序。
    • 确保为可执行文件添加了标记名称,为标题栏调整了应用程序标题,如下所示:

      应用程序面板

    • 在“启动画面”面板中,注意可以为应用程序提供程序启动画面和进度提示条,如下所示:
    • 启动画面面板

      注意:如果您还没有程序启动画面,请使用:这个。

  4. 在“项目属性”对话框的“库”面板,您会看到一组“集群”列表。集群是相关模块的集合。需要选择的集群只有 gsf1、ide10 和 platform9。取消选中所有其他集群。现在需要启用和禁用许多模块,因为只需要选择与我们的 HTML 编辑器相关的那些模块。在“库”面板中选中或取消选中一个模块时,都将在应用程序的 NetBeans 平台配置文件中添加一个条目。为了加快该过程,我们将这些条目粘贴到该文件。关闭“项目属性”对话框。

  5. 展开 Important Files 节点,然后打开“NetBeans 平台配置”文件。粘贴以下条目:

    disabled.clusters=\
        apisupport1,\
        harness,\
        java2,\
        nb6.1,\
        profiler3
    disabled.modules=\
        org.mozilla.rhino.patched,\
        org.netbeans.api.debugger,\
        org.netbeans.api.visual,\
        org.netbeans.core.ide,\
        org.netbeans.core.multiview,\
        org.netbeans.core.nativeaccess,\
        org.netbeans.lib.cvsclient,\
        org.netbeans.libs.commons_logging,\
        org.netbeans.libs.ini4j,\
        org.netbeans.libs.jna,\
        org.netbeans.libs.svnClientAdapter,\
        org.netbeans.libs.xerces,\
        org.netbeans.modules.autoupdate.services,\
        org.netbeans.modules.autoupdate.ui,\
        org.netbeans.modules.classfile,\
        org.netbeans.modules.core.kit,\
        org.netbeans.modules.css.visual,\
        org.netbeans.modules.db,\
        org.netbeans.modules.db.core,\
        org.netbeans.modules.db.dataview,\
        org.netbeans.modules.db.drivers,\
        org.netbeans.modules.db.kit,\
        org.netbeans.modules.db.metadata.model,\
        org.netbeans.modules.db.mysql,\
        org.netbeans.modules.db.sql.editor,\
        org.netbeans.modules.db.sql.visualeditor,\
        org.netbeans.modules.dbapi,\
        org.netbeans.modules.editor.bookmarks,\
        org.netbeans.modules.editor.kit,\
        org.netbeans.modules.extbrowser,\
        org.netbeans.modules.glassfish.common,\
        org.netbeans.modules.gototest,\
        org.netbeans.modules.httpserver,\
        org.netbeans.modules.ide.kit,\
        org.netbeans.modules.javascript.editing,\
        org.netbeans.modules.javascript.hints,\
        org.netbeans.modules.javascript.kit,\
        org.netbeans.modules.javascript.refactoring,\
        org.netbeans.modules.languages,\
        org.netbeans.modules.languages.bat,\
        org.netbeans.modules.languages.diff,\
        org.netbeans.modules.languages.manifest,\
        org.netbeans.modules.languages.refactoring,\
        org.netbeans.modules.languages.sh,\
        org.netbeans.modules.localhistory,\
        org.netbeans.modules.mercurial,\
        org.netbeans.modules.project.ant,\
        org.netbeans.modules.project.libraries,\
        org.netbeans.modules.properties,\
        org.netbeans.modules.properties.syntax,\
        org.netbeans.modules.schema2beans,\
        org.netbeans.modules.sendopts,\
        org.netbeans.modules.server,\
        org.netbeans.modules.servletapi,\
        org.netbeans.modules.subversion,\
        org.netbeans.modules.tasklist.kit,\
        org.netbeans.modules.tasklist.projectint,\
        org.netbeans.modules.tasklist.todo,\
        org.netbeans.modules.tasklist.ui,\
        org.netbeans.modules.usersguide,\
        org.netbeans.modules.utilities,\
        org.netbeans.modules.utilities.project,\
        org.netbeans.modules.versioning,\
        org.netbeans.modules.versioning.system.cvss,\
        org.netbeans.modules.versioning.util,\
        org.netbeans.modules.web.flyingsaucer,\
        org.netbeans.modules.xml,\
        org.netbeans.modules.xml.axi,\
        org.netbeans.modules.xml.core,\
        org.netbeans.modules.xml.lexer,\
        org.netbeans.modules.xml.multiview,\
        org.netbeans.modules.xml.retriever,\
        org.netbeans.modules.xml.schema.completion,\
        org.netbeans.modules.xml.schema.model,\
        org.netbeans.modules.xml.tax,\
        org.netbeans.modules.xml.text,\
        org.netbeans.modules.xml.tools,\
        org.netbeans.modules.xml.wsdl.model,\
        org.netbeans.modules.xml.xam,\
        org.netbeans.modules.xml.xdm,\
        org.netbeans.modules.xsl,\
        org.netbeans.spi.debugger.ui,\
        org.netbeans.spi.viewmodel,\
        org.netbeans.swing.dirchooser,\
        org.openide.compat,\
        org.openide.util.enumerations
    enabled.clusters=\
        gsf,\
        ide,\
        platform
    nbplatform.active=default

    现在拥有了一个与 HTML 编辑器相关的 NetBeans 模块的子集。但是,尽管您需要现在拥的这些模块,但可能不需要这些模块提供的所有用户界面元素。在下一节中,您调整用户界面并定制特定于将创建的 HTML 编辑器的窗口布局。

    调整用户界面

    可以根据需要保留或删除所选模块提供的用户界面。例如,您的 HTML 编辑器可能并不需要“工具”菜单下的一些项目或所有项目。同样,您也可能不需要一些工具栏或工具栏按钮。在本部分中,我们将修改 IDE 的用户界面,只留下对您的富客户端应用程序有用的子集。

    1. 展开 NetBeans 平台Application 项目,右键单击 Modules 节点,然后选择“添加”选项,如下所示:
    2. 上下文中的此层

      此时将现“新建项目”向导 (Ctrl-Shift-N)。将项目命名为 BrandingModule,单击“下一步”。

    3. 在“代码名称基”字段中,输入 org.netbeans.brandingmodule。
    4. 单击“生成 XML 层”,然后单击“完成”。
    5. 在标记模块中,展开 layer.xml 节点。此时将出现两个子节点:
    6. 展开 XML 层文件

    7. 在 <上下文中的此层> 节点中,IDE 将显示所有文件夹和文件的合并视图,所有模块在其层中注册。要排除一些项,请右键单击这些项,然后选择“删除”选项,如下所示:
    8. 上下文中的此层

      然后,IDE 向模块的 layer.xml 文件中添加标记,当安装模块时将隐藏您已删除的那些项。例如,通过右键单击 Menu Bar/Edit,我们可以移除 HTML 编辑器不需要的菜单项。此操作将生成一些代码片段,如 layer.xml 文件中的以下片段:

      <folder name="Menu">
          <folder name="Edit">
              <file name="org-netbeans-modules-editor-MainMenuAction$StartMacroRecordingAction.instance_hidden"/>
              <file name="org-netbeans-modules-editor-MainMenuAction$StopMacroRecordingAction.instance_hidden"/>
          </folder>       
      </folder>

      上面代码片段的结果是,另一个模块提供的“启动宏记录”和“停止宏记录”操作从菜单中被您标记模块移除。要再次显示它们,只需从 layer.xml 文件中删除上述标记。

    9. 使用上一步中介绍的方法,根据需要隐藏工具栏、工具栏按钮、菜单和菜单项。

      完成此步骤后,查看 layer.xml 文件。这样做时,您应该看到类似下文的内容,具体取决于您所删除的条目:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
      <filesystem>
          <folder name="Menu">
              <file name="BuildProject_hidden"/>
              <folder name="File">
                  <file name="Separator2.instance_hidden"/>
                  <file name="SeparatorNew.instance_hidden"/>
                  <file name="SeparatorOpen.instance_hidden"/>
                  <file name="org-netbeans-modules-project-ui-CloseProject.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-CustomizeProject.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-NewFile.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-NewProject.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-OpenProject.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-RecentProjects.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-SetMainProject.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-groups-GroupsMenu.shadow_hidden"/>
              </folder>
              <file name="Refactoring_hidden"/>
              <file name="RunProject_hidden"/>
              <folder name="Window">
                  <file name="ViewRuntimeTabAction.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-logical-tab-action.shadow_hidden"/>
                  <file name="org-netbeans-modules-project-ui-physical-tab-action.shadow_hidden"/>
              </folder>
          </folder>
      </filesystem>

      调整窗口布局

      使用 <上下文中的此层> 节点,我们不仅可以删除现有项目,而且还可以更改其内容。例如,HTML 编辑器可以对 HTML 文件进行编辑,因此,与使用 Java 源文件和项目的常规 IDE 相比,在初始布局中显示 Favorites 窗口是很重要的。

      窗口布局的定义也作为层中的文件介绍,所有这些文件都存储在 Windows2 文件夹下。Windows2 文件夹中的文件是 Window 系统 API 定义的伪可读 XML 文件。它们非常复杂,但好在 HTML 编辑器没有必要全部理解它们,如下所示:

      1. 在标记模块的 <上下文中的此层> 节点处,右键单击 Windows2 节点,然后选择“查找”,如下所示:
      2. 调用“查找”菜单

      3. 搜索名称为 Favorites 的对象,忽略大小写。我们将找到两个文件:
      4. 查找“收藏夹”窗口

        第一个文定义组件的外观和创建方式。由于不需要更改外观以及创建方式,因此也不需要修改该文件。第二个文件对您的意义较大,它包含以下内容:

        <tc-ref version="2.0">
            <module name="org.netbeans.modules.favorites/1" spec="1.1" />
            <tc-id id="favorites" />
            <state opened="false" />
        </tc-ref>

      5. 尽管大多数 XML 的含义都很模糊,但是不需要读取任何文档也能看懂其中的一行,将 false 更改为 true 似乎可以在缺省情况下打开该组件。请照此方法操作。
      6. 使用类似的方法,您还可以将以下窗口从缺省开启状态更改为您希望它们在 HTML 编辑器中所表现的状态。
        • CommonPalette.wstcref。Component Palete 的开启状态为 false。将它更改为 true。
        • projectTabLogical_tc.wstcref。项目窗口的开启状态为 true。将它更改为 false。
        • projectTab_tc.wstcref。文件窗口的开启状态为 true。将它更改为 false。
        • runtime.wstcref。服务窗口的开启状态为 true。将它更改为 false。

        您将看到标记模块包含几个新文件,每一个对应一个您更改的文件。实际上,这些文件覆盖了前几步中已经找到的文件,因此已经提供了覆盖窗口布局所需的信息。

      7. 覆盖“收藏夹”布局

        查看 layer.xml 文件,现在它应该包含以下内容。如果没有,则将以下内容复制并粘贴到 layer.xml 文件。

        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
        <filesystem>
            <folder name="Menu">
                <file name="BuildProject_hidden"/>
                <folder name="File">
                    <file name="Separator2.instance_hidden"/>
                    <file name="SeparatorNew.instance_hidden"/>
                    <file name="SeparatorOpen.instance_hidden"/>
                    <file name="org-netbeans-modules-project-ui-CloseProject.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-CustomizeProject.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-NewFile.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-NewProject.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-OpenProject.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-RecentProjects.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-SetMainProject.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-groups-GroupsMenu.shadow_hidden"/>
                </folder>
                <file name="Refactoring_hidden"/>
                <file name="RunProject_hidden"/>
                <folder name="Window">
                    <file name="ViewRuntimeTabAction.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-logical-tab-action.shadow_hidden"/>
                    <file name="org-netbeans-modules-project-ui-physical-tab-action.shadow_hidden"/>
                </folder>
            </folder>
            <folder name="Windows2">
                <folder name="Modes">
                    <folder name="commonpalette">
                        <file name="CommonPalette.wstcref" url="CommonPaletteWstcref.xml"/>
                    </folder>
                    <folder name="explorer">
                        <file name="favorites.wstcref" url="favoritesWstcref.xml"/>
                        <file name="projectTabLogical_tc.wstcref" url="projectTabLogical_tcWstcref.xml"/>
                        <file name="projectTab_tc.wstcref" url="projectTab_tcWstcref.xml"/>
                        <file name="runtime.wstcref" url="runtimeWstcref.xml"/>
                    </folder>
                </folder>
            </folder>
        </filesystem>

        调整 Favorites 窗口

        在文件窗口显示的 NetBeans 平台Application 项目的 branding 文件夹的子文件夹中,我们可以覆盖在 NetBeans 资源中定义的字符串。在本部分中,我们将覆盖在 Favorites 窗口用于定义标签的字符串。例如,我们将 Favorites 标签值修改为 HTML Files,因为该窗口将专门用于 HTML 文件。

        1. 打开文件窗口并展开 NetBeans 平台Application 项目的 branding 文件夹。
        2. 在 branding/modules 内创建一个新文件夹结构。(在 IDE 中,可通过以下方法创建文件夹:右键单击某个文件夹,选择“新建”|“其他”,然后从“其他”类别中选择“文件夹”。)新的文件夹应该命名为 org-netbeans-modules-favorites.jar。在文件夹内,创建文件夹结构:org/netbeans/modules/favorites。在最后一个文件夹内,也就是在 favorites 文件夹内,创建一个新的 Bundle.properties 文件:
        3. 标记“收藏夹”窗口

          这个文件夹结构和资源文件与 Favorites 窗口相关的 NetBeans 资源中的文件夹结构相匹配。

        4. 添加在下面屏幕快照中显示的字符串,来覆盖 Favorites 窗口资源中匹配的资源文件所定义的相同字符串。
        5. 标记“收藏夹”窗口

          为了简化此步骤,复制并粘贴上文定义的字符串:

          Favorites=HTML Files
          ACT_AddOnFavoritesNode=&Find HTML Files...
          ACT_Remove=&Remove from HTML Files List
          ACT_View=HTML Files
          ACT_Select=HTML Files
          ACT_Select_Main_Menu=Select in HTML Files List
          
          # JFileChooser
          CTL_DialogTitle=Add to HTML Files List
          CTL_ApproveButtonText=Add
          ERR_FileDoesNotExist={0} does not exist.
          ERR_FileDoesNotExistDlgTitle=Add to HTML Files List
          MSG_NodeNotFound=The document node could not be found in the HTML Files List.

        稍后,在启动应用程序时,将会看到“收藏夹”窗口中的文本和标签已更改为上面列出的内容。这说明可以从 NetBeans 平台中提取组件,并根据需要标记该组件。

        运行应用程序

        运行应用程序很简单,只需右键单击项目节点,然后选择菜单项。

      8. 右键单击应用程序的项目节点,然后选择“清楚并构建全部”选项。
      9. 右键单击应用程序的项目节点,然后选择“运行”选项:
      10. 在应用程序部署完成后,在 Favorites 窗口内右键单击并选择包含 HTML 文件的文件夹,然后打开 HTML 文件,如下所示:
      11. 打开 HTML 文件

        现在,就已创建好了一个功能完善的 HTML 编辑器,而无需键入一行 Java 代码。

        分发应用程序

        从两种方法中选择一种分发您的应用程序。如果需要尽可能控制您的应用程序,则应该使用 Web start 在 Web 上分发应用程序。在这种情况下,希望更新应用程序时,您应该本地进行并通知最终户进行了更新,他们在下一次联机启动应用程序时将自动获取更新。此外,还可以选择使用包含应用程序的 ZIP 文件进行分发。使用这种方式,最终用户将在本地拥有完整的应用程序。您可以通过下文描述的更新机制分发更新和新特性。

        通过 ZIP 文件分发应用程序

        为了使应用程序具有可扩展性,我们需要用户安装模块来增强应用程序功能。为此,仅需要启用少量额外模块,该模块可以将 Plugin Manager 和 HTML 编辑器捆绑使用。

        1. 右键单击 NetBeans 平台Application 项目,然后选择“属性”选项。在“项目属性”对话框中,使用“库”面板并选中“更新中心”复选框以及下面突出显示的“自动更新服务”复选框以及“自动更新 UI”复选框:
        2. 自动更新模块

        3. 右键单击应用程序的项目节点,然后选择“清楚并构建全部”选项。
        4. 再次运行应用程序。请注意,在“工具”菜单下已经有了一个名为“插件”的新菜单项。
        5. 显示插件管理器
        6. 选择新的“插件”菜单项并安装一些对 HTML 编辑器有用的插件。浏览 Plugin Portal 并查找一些合适的插件。这也是最终用户更新其本地安装的应用程序的方式。
        7. 右键单击应用程序的项目节点,然后选择“构建 ZIP 分发”选项。

        8. 在 dist 文件夹(可在文件窗口中找到)中,您现在应该能够看到 ZIP 文件,扩展它即可看到其内容:
        9. 生成的 ZIP 文件

          注意:如上所示,在 bin 文件夹中创建应用程序启动程序。

          通过共享 NetBeans Web Start 存储库分发 HTML 编辑器

          除了使用 ZIP 文件分发之外,我们还可以通过微调使用“运行 JNLP 应用程序”第一次启动应用程序时生成的 master.jnlp 文件进行 Webstart 分发。即使已经完成了此操作,分发准备工作也还没有结束。至少还需要修改信息部分以提供更好的描述和图标。

          对标准 JNLP 基础结构的另一处更改是,使用了 www.netbeans.org 上提供的共享 JNLP 资源库。缺省情况下,为套件生成的 JNLP 应用程序始终包含其所有模块以及它所依赖的所有模块。这对于企业内部的联网使用可能很有用,但是它对于大多数广泛的互联网使用不太现实。对于互联网,如果在 NetBeans 平台上构建的所有应用程序都引用 NetBeans 模块中的某个存储库,它可能更好,这意味着可以共享这些模块,而不需要多次下载。

          NetBeans 6.1 提供了一个此类资源库。它并非包含 NetBeans IDE 的所有模块,而是仅包含一些足以使非 IDE 应用程序非常类似 HTML 编辑器的模块。要使用存储库,您仅需要添加正确的 URL 来修改 platform.properties。

          # share the libraries from common repository on netbeans.org
          # this URL is for release65 JNLP files:
          jnlp.platform.codebase=http://bits.netbeans.org/6.5/jnlp/
          

          只要应用程序作为 JNLP 应用程序启动,就可以从 netbeans.org 下载其所有共享插件模块并和执行相同操作的其他程序共享。




          另请参见

          这包括 NetBeans 平台快速入门教程。本文档介绍了如何创建用于在 IDE 中添加 Google 搜索工具栏的插件。关于在 NetBeans 平台上创建和开发应用程序的更多信息,请参见以下资源:

           
           
          loading
          Please Confirm