blob: cdb3cccbe0920db858f07e47ffec3bceb2b96e10 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- -*- xhtml -*- -->
<title>NetBeans 平台 6.1 快速入门教程</title>
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
<meta name="AUDIENCE" content="NBUSER">
<meta name="TYPE" content="ARTICLE">
<meta name="EXPIRES" content="N">
<meta name="developer" content="jtulach@netbeans.org">
<meta name="indexed" content="y">
<meta name="description"
content="Nodes API 使用简介。">
<!-- Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. --> <!-- Use is subject to license terms.-->
</head>
<body>
<h1>NetBeans 平台快速入门</h1>
<p>欢迎使用 NetBeans 平台!
</p><p>本教程简要地向您介绍 NetBeans 平台工作流,演示了创建一个简单 HTML 编辑器的过程。创建的 HTML 编辑器尽管简单,但是功能非常成熟,因为它将重用 NetBeans 平台提供的基础结构。例如,无需任何编码,您的 HTML 编辑器即可拥有一个成熟的窗口系统。完成本教程后,您将基本掌握如何在 NetBeans 平台创建、构建和运行应用程序。
</p><p>完成本教程后,您可以参考 <a href="https://netbeans.org/kb/trails/platform.html">NetBeans 平台学习资源</a> 继续学习。学习资源提供全面的教程,内容涉及用于各种应用程序类型的 NetBeans API。如果要学习 &quot;Hello World&quot; 应用程序,可以跳过此教程,直接开始学习资源的学习。
</p><p><b>目录</b></p>
<img src="../../images/articles/61/netbeans-stamp.gif" class="stamp" width="114" height="114" alt="此页面上的内容适用于 NetBeans IDE 6.1" title="此页面上的内容适用于 NetBeans IDE 6.0"> </p>
<ul class="toc">
<li><a href="#generating">生成主干应用程序</a></li>
<li><a href="#tweakingthemenuitems">调整用户界面</a>
</li><li><a href="#tweakingthewindowlayout">调整窗口布局</a></li>
<li><a href="#tweakingthefavorites">调整 Favorites 窗口</a></li>
<li><a href="#runningtheapplication">运行应用程序</a></li>
<li><a href="#distributingtheapplication">分发应用程序</a>
<ul>
<li><a href="#zip">通过 ZIP 文件分发 HTML 编辑器</a></li>
<li><a href="#Webstart">通过共享 NetBeans Web Start 存储库分发 HTML 编辑器</a></li>
</ul>
</li>
</ul>
<p><b>要学习本教程,您需要下表中列出的软件和资源。</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">软件或资源</th>
<th class="tblheader" scope="col">所需版本</th>
</tr>
<tr>
<td class="tbltd1">NetBeans IDE</td>
<td class="tbltd1"><a href="http://download.netbeans.org/netbeans/6.1/final/">版本 6.1</a></td>
</tr>
<tr>
<td class="tbltd1">Java Developer Kit(JDK)</td>
<td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">版本 6</a><br>版本 5</td>
</tr>
</tbody>
</table>
<p class="tips">为了进行故障排除,您还可以选择 <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=6635">下载完整的示例</a> 并检查资源。
</p><p>在本教程结束时,您的 HTML 编辑器将如下图所示:</p>
<img src="../../images/tutorials/htmleditor/html_editor_final-61.png" border="1" alt="完成的 HTML 编辑器">
<p><b class="notes">注意:</b>尽管这是一个非常简单的演示程序,但请您认真对待。这是一个<i>真正的</i> 程序,通过该程序可轻松编辑 HTML 页面,并且它还具有代码完成、验证和预定义 HTML 片断的功能。
</p><p>本教程所创建的 HTML 编辑器是一个&ldquo;在 NetBeans 平台上&rdquo;构建的富客户端应用程序。这意味着 IDE 的核心,也<i><u>就是</u></i> NetBeans 平台,将是您应用程序的基础。在 NetBeans 平台上,添加所需的模块,并且排除 IDE 需要但应用程序不需要的模块。下面您将看到 NetBeans 平台(应用程序的基础)中添加的一些 IDE 模块:</p>
<img src="../../images/tutorials/htmleditor/diagram.png" alt="NetBeans 平台应用程序的结构">
<p>创建该 HTML 编辑器需要生成应用程序框架,排除您不需要的模块和用户界面项,然后将 Favorites 窗口设置为 IDE 启动时默认打开的窗口。IDE 用户界面元素支持所有这些活动。</p>
<p>您将看到构建过程多么简单、多么容易,更确切地说是在 NetBeans 平台上<em>组装</em> 一个功能全面的应用程序。最后,我们将向您介绍如何使最终产品可以方便地通过 WebStart 下载和启动。
</p>
<p><b class="notes">注意:</b>虽然 NetBeans 平台是一个独立的产品,但不必为了学习本教程而单独下载它。我们将在 IDE 中开发富客户端应用程序,然后排除与 IDE 相关但对于您的应用程序来说是多余的模块。
<!-- ===================================================================================== -->
</p><h2 class="tutorial"><a name="generating"></a>生成主干应用程序</h2>
<p>在 NetBeans 平台上创建应用程序时,首先需要创建 NetBeans 平台Application 项目。默认的模块 NetBeans 平台Application 项目包括 NetBeans 平台中的<i>所有</i> 模块和 NetBeans IDE 中的<i>所有</i> 模块。由于我们并不需要所有模块,因此我们将排除不需要的模块。
</p><ol><li>使用 New Project (Ctrl-Shift-N) 向导,从 NetBeans 模块类别中的模板创建 NetBeans 平台Application Project,如下图所示。</p>
<p><img border="1" src="../../images/tutorials/htmleditor/netbeans-platform-app-1.png" border="1" alt="新建项目向导">
</p><p>单击&ldquo;下一步&rdquo;并将 NetBeans 平台Application 项目命名为 &quot;NetBeansHTMLEditor&quot;。单击&ldquo;完成&rdquo;按钮。</p>
</li><li>右键单击项目节点,选择&ldquo;属性&rdquo;选项,然后在 NetBeans 平台Application 的&ldquo;项目属性&rdquo;对话框中做少量更改:
<ul><p></p><li>在&ldquo;构建&rdquo;面板中,单击&ldquo;创建独立应用程序&rdquo;按钮,指定在 NetBeans 平台上生成富客端户应用程序。</p>
<p>确保为可执行文件添加了标记名称,为标题栏调整了应用程序标题,如下所示:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/application_panel-61.png" border="1" alt="应用程序面板">
</p></li><li>在&ldquo;启动画面&rdquo;面板中,注意可以为应用程序提供程序启动画面和进度提示条,如下所示:
</p>
<p><img border="1" src="../../images/tutorials/htmleditor/splash_screen_panel-61.png" border="1" alt="启动画面面板">
</p><p><b class="notes">注意:</b>如果您还没有程序启动画面,请使用:<a href="../../images/tutorials/htmleditor/splash.gif">这个</a>
</p></li>
<li><p>在&ldquo;项目属性&rdquo;对话框的&ldquo;库&rdquo;面板中,您会看到一组&ldquo;集群&rdquo;列表。集群是相关模块的集合。需要选择的集群只有 <tt>gsf1</tt><tt>ide9</tt><tt>platform8</tt>。取消选中所有其他集群。现在需要启用和禁用许多模块,因为只需要选择与我们的 HTML 编辑器相关的那些模块。在&ldquo;库&rdquo;面板中选中或取消选中一个模块时,都将在应用程序的 NetBeans 平台配置文件中添加一个条目。为了加快该过程,我们将这些条目粘贴到该文件。关闭&ldquo;项目属性&rdquo;对话框。</p>
<p></p><p>展开 Important Files 节点,然后打开&ldquo;NetBeans 平台配置&rdquo;文件。粘贴以下条目:
</p><p></p><pre>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</pre>
</li></ul></li>
<p>现在拥有了一个与 HTML 编辑器相关的 NetBeans 模块的子集。但是,尽管您需要现在拥有的这些模块,但可能不需要这些模块提供的所有用户界面元素。在下一节中,您调整用户界面并自定义特定于将创建的 HTML 编辑器的窗口布局。<!-- ===================================================================================== -->
</p><h2 class="tutorial"><a name="tweakingthemenuitems"></a>调整用户界面</h2>
<p>可以根据需要保留或删除所选模块提供的用户界面。例如,您的 HTML 编辑器可能并不需要&ldquo;工具&rdquo;菜单下的一些项目或所有项目。同样,您也可能不需要一些工具栏或工具栏按钮。在本部分中,我们将修改 IDE 的用户界面,只留下对您的富客户端应用程序有用的子集。
</p><ol><li>展开 NetBeans 平台Application 项目,右键单击 Modules 节点,然后选择&ldquo;添加&rdquo;选项,如下所示:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/add-module-61.png" alt="上下文中的此层">
</p><p>此时将出现&ldquo;新建项目&rdquo;向导 (Ctrl-Shift-N)。将项目命名为 <tt>BrandingModule</tt>,单击&ldquo;下一步&rdquo;。
</p></li><li>在&ldquo;代码名称基&rdquo;字段中,输入 <tt>org.netbeans.brandingmodule</tt>
</li><li>在&ldquo;XML 层&rdquo;字段中,输入包的名称并附加 &quot;layer.xml&quot;,比如 &quot;org/netbeans/brandingmodule/layer.xml&quot;,然后单击&ldquo;完成&rdquo;。
<p><b class="notes">注意:</b>如果没有在此字段中输入 layer.xml 文件的位置,则将不会创建该文件。在这种情况下,在主包中创建一个名为 &quot;layer.xml&quot; 的文件并以如下方式手动在&ldquo;模块清单&rdquo;中注册。
</p><p></p><pre>OpenIDE-Module-Layer:org/netbeans/brandingmodule/layer.xml</pre>
</li><li>在标记模块中,展开 <tt>layer.xml</tt> 节点。此时将出现两个子节点:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/expanded-xml-layer-61.png" alt="展开 XML 层文件">
</p><p><b class="notes">注意:</b>在手动添加 layer.xml 文件的情况下,您必须扩展 Important Files 节点才能扩展其中的 XML Layer 节点。
</p></li><li><tt>&lt;this layer in context&gt;</tt> 节点中,IDE 将显示所有文件夹和文件的合并视图,所有模块在其层中注册。要排除一些项,请右键单击这些项,然后选择&ldquo;删除&rdquo;选项,如下所示:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/this-layer-in-context-61.png" alt="上下文中的此层">
</p><p>然后,IDE 向模块的 <tt>layer.xml</tt> 文件中添加标记,当安装模块时将隐藏您已删除的那些项。例如,通过右键单击 <tt>Menu Bar/Edit</tt>,我们可以移除 HTML 编辑器不需要的菜单项。此操作将生成一些代码片段,如 <tt>layer.xml</tt> 文件中的以下片段:
</p><pre class="examplecode">&lt;folder name=&quot;Menu&quot;&gt;
&lt;folder name=&quot;Edit&quot;&gt;
&lt;file name=&quot;org-netbeans-modules-editor-MainMenuAction$StartMacroRecordingAction.instance_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-editor-MainMenuAction$StopMacroRecordingAction.instance_hidden&quot;/&gt;
&lt;/folder&gt;
&lt;/folder&gt;</pre>
<p>
上面代码片段的结果是,另一个模块提供的<tt>&ldquo;启动宏记录&rdquo;</tt><tt>&ldquo;停止宏记录&rdquo;</tt>操作从菜单中被您标记模块移除。要再次显示它们,只需从 <tt>layer.xml</tt> 文件中删除上述标记。
</p></li><li><p>使用上一步中介绍的方法,根据需要隐藏工具栏、工具栏按钮、菜单和菜单项。</p>
<p>完成此步骤后,查看 <tt>layer.xml</tt> 文件。这样做时,您应该看到类似下文的内容,具体取决于您所删除的条目:</p>
<p></p><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE filesystem PUBLIC &quot;-//NetBeans//DTD Filesystem 1.1//EN&quot; &quot;https://netbeans.org/dtds/filesystem-1_1.dtd&quot;&gt;
&lt;filesystem&gt;
&lt;folder name=&quot;Menu&quot;&gt;
&lt;file name=&quot;BuildProject_hidden&quot;/&gt;
&lt;folder name=&quot;File&quot;&gt;
&lt;file name=&quot;Separator2.instance_hidden&quot;/&gt;
&lt;file name=&quot;SeparatorNew.instance_hidden&quot;/&gt;
&lt;file name=&quot;SeparatorOpen.instance_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-CloseProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-CustomizeProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-NewFile.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-NewProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-OpenProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-RecentProjects.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-SetMainProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-groups-GroupsMenu.shadow_hidden&quot;/&gt;
&lt;/folder&gt;
&lt;file name=&quot;Refactoring_hidden&quot;/&gt;
&lt;file name=&quot;RunProject_hidden&quot;/&gt;
&lt;folder name=&quot;Window&quot;&gt;
&lt;file name=&quot;ViewRuntimeTabAction.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-logical-tab-action.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-physical-tab-action.shadow_hidden&quot;/&gt;
&lt;/folder&gt;
&lt;/folder&gt;
&lt;/filesystem&gt;</pre>
</li></ol>
<!-- ===================================================================================== -->
<h2 class="tutorial"><a name="tweakingthewindowlayout"></a>调整窗口布局</h2>
<p>
使用 <tt>&lt;this layer in context&gt;</tt> 节点,我们不仅可以删除现有项目,还可以更改其内容。例如,HTML 编辑器需要操作 HTML 文件。因此,同 Java 源文件和项目合作良好的常规 IDE 相比,在初始布局中显示 <tt>Favorites</tt> 窗口很重要。
</p>
<p>
窗口布局的定义也作为层中的文件介绍,所有这些文件都存储在 <tt>Windows2</tt>文件夹下。<tt>Windows2</tt> 文件夹中的文件是 <a href="http://bits.netbeans.org/dev/javadoc/org-openide-windows/org/openide/windows/doc-files/api.html">Window 系统 API</a> 定义的伪可读 XML 文件。它们非常复杂,但好在 HTML 编辑器没有必要全部理解它们,如下所示:
</p>
<ol><li>在标记模块的 <tt>&lt;this layer in context&gt;</tt> 节点处,右键单击 <tt>Windows2</tt> 节点,然后选择 Find,如下所示:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/find-favorites-61.png" alt="调用 Find 菜单">
</p></li><li>搜索名称为 <tt>Favorites</tt> 的对象,忽略大小写。我们将找到两个文件:
</p>
<p><img border="1" src="../../images/tutorials/htmleditor/find-favorites2-61.png" alt="查找 Favorites 窗口">
</p><p>
第一个文件定义组件的外观和创建方式。由于不需要更改外观以及创建方式,因此也不需要修改该文件。第二个文件对您的意义较大,它包含以下内容:
</p>
<pre class="examplecode">
&lt;tc-ref version=&quot;2.0&quot;&gt;
&lt;module name=&quot;org.netbeans.modules.favorites/1&quot; spec=&quot;1.1&quot; /&gt;
&lt;tc-id id=&quot;favorites&quot; /&gt;
&lt;state opened=&quot;false&quot; /&gt;
&lt;/tc-ref&gt;</pre>
<p>
</p></li><li>尽管大多数 XML 的含义都很模糊,但是不需要读取任何文档也能看懂其中的一行。将 <tt>false</tt> 更改为 <tt>true</tt> 似乎可以在默认情况下打开该组件。请照此方法操作。
</li><li>
使用类似的方法,您还可以将以下窗口从默认的开启状态更改为您希望它们在 HTML 编辑器中所表现的状态。
<ul>
<li><tt>CommonPalette.wstcref</tt>。Component Palete 的开启状态为 <tt>false</tt>。将它更改为 <tt>true</tt>
</li><li><tt>navigatorTC.wstcref</tt>。Navigator 的开启状态为 <tt>true</tt>。将它更改为 <tt>false</tt>
</li><li><tt>projectTabLogical_tc.wstcref</tt>。项目窗口的开启状态为 <tt>true</tt>。将它更改为 <tt>false</tt>
</li><li><tt>projectTab_tc.wstcref</tt>。文件窗口的开启状态为 <tt>true</tt>。将它更改为 <tt>false</tt>
</li><li><tt>runtime.wstcref</tt>。服务窗口的开启状态为 <tt>true</tt>。将它更改为 <tt>false</tt>
</li></ul>
</li></ol>
<p>您将看到标记模块包含几个新文件,每一个对应一个您更改的文件。实际上,这些文件覆盖了前几步中已经找到的文件,因此已经提供了覆盖窗口布局所需的信息。</p>
<p><img border="1" src="../../images/tutorials/htmleditor/wstcrefs-overridden-61.png" alt="覆盖 Favorites 布局。">
</p><p>查看 <tt>layer.xml</tt> 文件,现在它应该包含以下内容。如果没有,则将以下内容复制并粘贴到 <tt>layer.xml</tt> 文件。
</p><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE filesystem PUBLIC &quot;-//NetBeans//DTD Filesystem 1.1//EN&quot; &quot;https://netbeans.org/dtds/filesystem-1_1.dtd&quot;&gt;
&lt;filesystem&gt;
&lt;folder name=&quot;Menu&quot;&gt;
&lt;file name=&quot;BuildProject_hidden&quot;/&gt;
&lt;folder name=&quot;File&quot;&gt;
&lt;file name=&quot;Separator2.instance_hidden&quot;/&gt;
&lt;file name=&quot;SeparatorNew.instance_hidden&quot;/&gt;
&lt;file name=&quot;SeparatorOpen.instance_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-CloseProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-CustomizeProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-NewFile.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-NewProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-OpenProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-RecentProjects.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-SetMainProject.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-groups-GroupsMenu.shadow_hidden&quot;/&gt;
&lt;/folder&gt;
&lt;file name=&quot;Refactoring_hidden&quot;/&gt;
&lt;file name=&quot;RunProject_hidden&quot;/&gt;
&lt;folder name=&quot;Window&quot;&gt;
&lt;file name=&quot;ViewRuntimeTabAction.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-logical-tab-action.shadow_hidden&quot;/&gt;
&lt;file name=&quot;org-netbeans-modules-project-ui-physical-tab-action.shadow_hidden&quot;/&gt;
&lt;/folder&gt;
&lt;/folder&gt;
&lt;folder name=&quot;Windows2&quot;&gt;
&lt;folder name=&quot;Modes&quot;&gt;
&lt;folder name=&quot;commonpalette&quot;&gt;
&lt;file name=&quot;CommonPalette.wstcref&quot; url=&quot;CommonPaletteWstcref.xml&quot;/&gt;
&lt;/folder&gt;
&lt;folder name=&quot;explorer&quot;&gt;
&lt;file name=&quot;favorites.wstcref&quot; url=&quot;favoritesWstcref.xml&quot;/&gt;
&lt;file name=&quot;projectTabLogical_tc.wstcref&quot; url=&quot;projectTabLogical_tcWstcref.xml&quot;/&gt;
&lt;file name=&quot;projectTab_tc.wstcref&quot; url=&quot;projectTab_tcWstcref.xml&quot;/&gt;
&lt;file name=&quot;runtime.wstcref&quot; url=&quot;runtimeWstcref.xml&quot;/&gt;
&lt;/folder&gt;
&lt;folder name=&quot;navigator&quot;&gt;
&lt;file name=&quot;navigatorTC.wstcref&quot; url=&quot;navigatorTCWstcref.xml&quot;/&gt;
&lt;/folder&gt;
&lt;/folder&gt;
&lt;/folder&gt;
&lt;/filesystem&gt;</pre>
<!-- ===================================================================================== -->
<h2 class="tutorial"><a name="tweakingthefavorites"></a>调整 Favorites 窗口</h2>
<p>
在文件窗口显示的 NetBeans 平台Application 项目的 <tt>branding</tt> 文件夹的子文件夹中,我们可以覆盖在 NetBeans 资源中定义的字符串。在本部分中,我们将覆盖在 Favorites 窗口中用于定义标签的字符串。例如,我们将 Favorites 标签值修改为 HTML Files,因为该窗口将专门用于 HTML 文件。
</p>
<ol><li>打开文件窗口并展开 NetBeans 平台Application 项目的 <tt>branding</tt> 文件夹。
</li><li><tt>branding/modules</tt> 内创建一个新文件夹结构。新的文件夹应该命名为 <tt>org-netbeans-modules-favorites.jar</tt>。在文件夹内,创建文件夹结构:<tt>org/netbeans/modules/favorites</tt>。在最后一个文件夹内,也就是在 <tt>favorites</tt> 文件夹内, 创建一个新的 <tt>Bundle.properties</tt> 文件。
<p><img border="1" src="../../images/tutorials/htmleditor/favorites-branding-61a.png" alt="标记 Favorites 窗口">
</p><p>这个文件夹结构和资源文件与 Favorites 窗口相关的 NetBeans 资源中的文件夹结构相匹配。
</p></li><li>添加在下面屏幕截图中显示的字符串,来覆盖 Favorites 窗口资源中匹配的资源文件所定义的相同字符串。</p>
<p><img border="1" src="../../images/tutorials/htmleditor/favorites-branding-61b.png" alt="标记 Favorites 窗口">
</p><p>为了简化此步骤,复制并粘贴上文定义的字符串:
</p><pre>Favorites=HTML Files
ACT_AddOnFavoritesNode=&amp;Find HTML Files...
ACT_Remove=&amp;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.</pre>
</li></ol>
<!-- ===================================================================================== -->
<h2 class="tutorial"><a name="runningtheapplication"></a>运行应用程序</h2>
<p>
运行应用程序很简单,只需右键单击项目节点,然后选择菜单项。
</p>
<ol>
<li>右键单击应用程序的项目节点,然后选择&ldquo;清楚并构建全部&rdquo;选项。
</li><li>右键单击应用程序的项目节点,然后选择&ldquo;运行&rdquo;选项:
</li><li>在应用程序部署完成后,在 Favorites 窗口内右键单击并选择包含 HTML 文件的文件夹,然后打开 HTML 文件,如下所示:</p>
<img src="../../images/tutorials/htmleditor/html_editor_final-61.png" border="1" alt="打开 HTML 文件">
</li></ol>
<!-- ===================================================================================== -->
<!-- ===================================================================================== -->
<h2 class="tutorial"><a name="distributingtheapplication"></a>分发应用程序</h2>
<p>
从两种方法中选择一种分发您的应用程序。如果需要尽可能控制您的应用程序,则应该使用 Web start 在 Web 上分发应用程序。在这种情况下,希望更新应用程序时,您应该本地进行并通知最终用户进行了更新,他们在下一次联机启动应用程序时将自动获取更新。此外,还可以选择使用包含应用程序的 ZIP 文件进行分发。使用这种方式,最终用户将在本地拥有完整的应用程序。您可以通过下文描述的更新机制分发更新和新特性。
</p><h3 class="tutorial"><a name="zip"></a>通过 ZIP 文件分发应用程序</h3>
<p> 为了使应用程序具有可扩展性,我们需要用户安装模块来增强应用程序功能。为此,仅需要启用少量额外模块,该模块可以将 Plugin Manager 和 HTML 编辑器捆绑使用。
</p>
<ol><li>右键单击 NetBeans 平台Application 项目,然后选择&ldquo;属性&rdquo;选项。在&ldquo;项目属性&rdquo;对话框中,使用&ldquo;库&rdquo;面板并选择<tt>&ldquo;更新中心&rdquo;</tt>复选框、<tt>&ldquo;自动更新服务&rdquo;</tt>复选框以及<tt>&ldquo;自动更新 UI&rdquo;</tt>复选框,显示如下:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/auto-update-61.png" alt="自动更新模块">
</p></li><li>右键单击应用程序的项目节点,然后选择&ldquo;清楚并构建全部&rdquo;选项。
</li><li>再次运行应用程序。请注意,在&ldquo;工具&rdquo;菜单下已经有了一个名为&ldquo;插件&rdquo;的新菜单项。</p>
<img src="../../images/tutorials/htmleditor/auto-update2-61.png" border="1" alt="显示插件管理器">
</li><li>选择新的&ldquo;插件&rdquo;菜单项并安装一些对 HTML 编辑器有用的插件。浏览 <a href="http://plugins.netbeans.org/PluginPortal/">Plugin Portal</a> 并查找一些合适的插件。这也是最终用户更新其本地安装的应用程序的方式。
</li><li><p>右键单击应用程序的项目节点,然后选择&ldquo;构建 ZIP 分发&rdquo;选项。</p>
</li><li><tt>dist</tt> 文件夹(可在文件窗口中找到)中,您现在应该能够看到 ZIP 文件,扩展它即可看到其内容:</p>
<p><img border="1" src="../../images/tutorials/htmleditor/unzipped-app-61.png" alt="生成的 ZIP 文件">
</p><p><b class="notes">注意:</b>如上所示,在 <tt>bin</tt> 文件夹中创建应用程序启动程序。
</p></li>
<br /> <!-- ======================================================================================== -->
<h3><a name="Webstart"></a>通过共享 NetBeans Web Start 存储库分发 HTML 编辑器</h3>
<p>
除了使用 ZIP 文件分发之外,我们还可以通过微调第一次启动应用程序时生成的 <tt>master.jnlp</tt> 文件进行 Webstart 分发。即使已经完成了此操作,分发准备工作也还没有结束。至少还需要修改信息部分以提供更好的描述和图标。
</p><p>
对标准 JNLP 基础结构所做的另一个修改是在 www.netbeans.org. 上使用共享 JNLP 存储库。在默认的情况下,为套件生成的 JNLP 应用程序始终包含其所有的模块,以及它所依赖的所有模块。这对于企业内部的互联网使用可能很有用,但是它对于大多数广泛的互联网使用不太现实。对于互联网,如果在 NetBeans 平台上构建的所有应用程序都引用 NetBeans 模块中的某个存储库,它可能更好,这意味着可以共享这些模块,而不需要多次下载。
</p>
<p>
NetBeans 6.1 就有这样的存储库。它不包含 NetBeans IDE 拥有的所有模块,但是它包含了一些足以使非 IDE 应用程序非常类似 HTML 编辑器的模块。要使用存储库,您仅需要添加正确的 URL 来修改 <tt>platform.properties</tt>
</p>
<pre class="examplecode">
# share the libraries from common repository on netbeans.org
# this URL is for release60 JNLP files:
jnlp.platform.codebase=https://netbeans.org/download/6_0/jnlp/
</pre>
<p>
只要应用程序作为 JNLP 应用程序启动,就可以从 netbeans.org 下载其所有共享插件模块并和执行相同操作的其他程序共享。</p>
<br />
<!-- ======================================================================================== --> <br>
<div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&amp;subject=Feedback:%20NetBeans%20Platform%206.1%20Quick%20Start%20Tutorial">将反馈发送给我们</a></div>
<br style="clear:both;" /> <!-- ======================================================================================== -->
<h2><a name="nextsteps"></a>更多信息</h2>
<p>这包括 NetBeans 平台快速入门教程。该文档讨论了如何创建一个插件来向 IDE 添加 Google 搜索工具栏。关于在 NetBeans 平台上创建和开发应用程序的更多信息,请参阅以下资源:
</p><ul>
<p></p><li><a href="https://netbeans.org/kb/trails/platform.html">其他相关教程</a></li>
<p></p><li><a href="https://netbeans.org/download/dev/javadoc/">NetBeans API Javadoc</a></li>
</ul>
<hr>
<!-- ======================================================================================== -->
</ol></ol></body>
</html>