corner imagecorner image FeaturesPluginsPlatformDocs & SupportCommunityPartners


NetBeans 平台快速入门

欢迎使用 NetBeans 平台!

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

完成本教程后,您可以参考 NetBeans 平台学习资源 继续学习。学习资源提供全面的教程,内容涉及用于各种应用程序类型的 NetBeans API。如果要学习 "Hello World" 应用程序,可以跳过此教程,直接开始学习资源的学习。

目录

此页面上的内容适用于 NetBeans IDE 6.1

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

软件或资源 所需版本
NetBeans IDE 版本 6.1
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,如下图所示。

    新建项目向导

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

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

    • 在“构建”面板中,单击“创建独立应用程序”按钮,指定在 NetBeans 平台上生成富客端户应用程序。

      确保为可执行文件添加了标记名称,为标题栏调整了应用程序标题,如下所示:

      应用程序面板

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

      启动画面面板

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

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

      展开 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.insane,\
       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.editor,\
       org.netbeans.modules.css.visual,\
       org.netbeans.modules.db,\
       org.netbeans.modules.db.core,\
       org.netbeans.modules.db.drivers,\
       org.netbeans.modules.db.kit,\
       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.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.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.timers,\
       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=\
       gsf1,\
       ide9,\
       platform8
      nbplatform.active=default

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

调整用户界面

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

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

    上下文中的此层

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

  2. 在“代码名称基”字段中,输入 org.netbeans.brandingmodule
  3. 在“XML 层”字段中,输入包的名称并附加 "layer.xml",比如 "org/netbeans/brandingmodule/layer.xml",然后单击“完成”。

    注意:如果没有在此字段中输入 layer.xml 文件的位置,则将不会创建该文件。在这种情况下,在主包中创建一个名为 "layer.xml" 的文件并以如下方式手动在“模块清单”中注册。

    OpenIDE-Module-Layer:org/netbeans/brandingmodule/layer.xml
  4. 在标记模块中,展开 layer.xml 节点。此时将出现两个子节点:

    展开 XML 层文件

    注意:在手动添加 layer.xml 文件的情况下,您必须扩展 Important Files 节点才能扩展其中的 XML Layer 节点。

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

    上下文中的此层

    然后,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 文件中删除上述标记。

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

    完成此步骤后,查看 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>

调整窗口布局

使用 <this layer in context> 节点,我们不仅可以删除现有项目,还可以更改其内容。例如,HTML 编辑器需要操作 HTML 文件。因此,同 Java 源文件和项目合作良好的常规 IDE 相比,在初始布局中显示 Favorites 窗口很重要。

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

  1. 在标记模块的 <this layer in context> 节点处,右键单击 Windows2 节点,然后选择 Find,如下所示:

    调用 Find 菜单

  2. 搜索名称为 Favorites 的对象,忽略大小写。我们将找到两个文件:

    查找 Favorites 窗口

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

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

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

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

覆盖 Favorites 布局。

查看 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 name="navigator">
 <file name="navigatorTC.wstcref" url="navigatorTCWstcref.xml"/>
 </folder>
 </folder>
 </folder>
</filesystem>

调整 Favorites 窗口

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

  1. 打开文件窗口并展开 NetBeans 平台Application 项目的 branding 文件夹。
  2. branding/modules 内创建一个新文件夹结构。新的文件夹应该命名为 org-netbeans-modules-favorites.jar。在文件夹内,创建文件夹结构:org/netbeans/modules/favorites。在最后一个文件夹内,也就是在 favorites 文件夹内, 创建一个新的 Bundle.properties 文件。

    标记 Favorites 窗口

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

  3. 添加在下面屏幕截图中显示的字符串,来覆盖 Favorites 窗口资源中匹配的资源文件所定义的相同字符串。

    标记 Favorites 窗口

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

    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.

运行应用程序

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

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

分发应用程序

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

通过 ZIP 文件分发应用程序

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

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

    自动更新模块

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

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

    生成的 ZIP 文件

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


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

除了使用 ZIP 文件分发之外,我们还可以通过微调第一次启动应用程序时生成的 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 release60 JNLP files:
jnlp.platform.codebase=http://www.netbeans.org/download/6_0/jnlp/

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




更多信息

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

  • 其他相关教程
  • NetBeans API Javadoc

  • Project Features

    Project Links

    About this Project

    Platform was started in November 2009, is owned by Antonin Nebuzelsky, and has 129 members.
     
     
    Close
    loading
    Please Confirm
    Close