站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Netbeans 专题 GUI 编辑器

GUI 编辑器

摘要: GUI 编辑器 开发 GUI 时,我可以编辑蓝色保护块内的代码吗? 我怎样才能将图标与添加到 palette 的 bean 关联起来? 什么是 .form 文件? 我可以生成现有类的 .form 文件...
GUI 编辑器

开发 GUI 时,我可以编辑蓝色保护块内的代码吗?

是的。使用组件属性的 Code Generation 视图。

实际上对于组件实例是没有限制的 - 您将发现所需做的事情都在组件属性的 Code Generation 视图上。您可以完全替换组件实例化的方式,在创建和初始化前或后添加代码。唯一的差别是该代码存储在 XML .form 文件中,因此重新生成保护代码时包括该代码。

如果您正在编写相当简单的 bean,您可能不想为其使用 GUI editor。但是,您强烈要求编辑保护块中的内容(使用 Code Generation 视图选项 - 您已经完全控制了实例化和初始化),复制您的类并将其粘贴到普通的类模板。您将不能使用窗体编辑器来编辑结果,但是如果您已经建立了基本 gui,则可以那么做。每种方法都让您得到需要的结果 - 请使用您用起来更适合的方法。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我怎样才能将图标与添加到 palette 的 bean 关联起来?

您需要为您的 bean 创建并编译一个 BeanInfo 类。图标由 BeanInfoIcon 属性提供。

快速简单的方法是,在 Projects View 中展开各自的类节点,右键单击 Bean Patters 节点并选择菜单中的 BeanInfo Editor,根据需要编辑属性。

适用于: NetBeans 4.0、4.1;   Platforms:所有平台;

什么是 .form 文件?

.form 文件是可视化窗体编辑器用来存储视图信息的 XML 文件.您不必将其随您的应用程序发布,它仅用于 IDE。但是,如果您要在窗体编辑器中再次打开窗体,则应该保持文件。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我可以生成现有类的 .form 文件吗?

很不幸,不能。

NetBeans 窗体编辑器无法为 GUI 类重新生成丢失的 .form 文件,或无法为最初不是在 NetBeans 中创建的 GUI 类生成 .form 文件。

但是,有一些外部工具尝试解决该问题,如 FormGenerator。请查看 contrib.netbeans.org 最新版本。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我可以随应用程序分发 NetBeans 布局库吗?

是的。

NetBeans IDE 绑定了 Swing Layout Extensions 库(包含 GroupLayout),且拥有特定的布局管理器 AbsoluteLayout。设计时,根据需要自动使用库。当您构建您的项目时,项目中使用的库的 JAR 会出现在项目的 dist/lib 目录下。您可以打包整个 dist 目录,得到发布应用程序所需的全部内容。

边注:默认情况下,Matisse GUI builder 会使用 GroupLayoutAbsoluteLayout 仅为历史原因而保留,不建议用于产品 UI。

适用于: NetBeans 5.0;   Platforms:所有平台;

我如何使用 GridBagLayout 来设计窗体?

切换到 GridBagLayout,在 Inspector 树中,右键单击 GridBagLayout 节点并从弹出菜单中选择 Customize。会弹出一个非常灵活的 customizer,让您可以方便调整限制。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我怎样创建自定义容器 bean?

最简单(也是推荐的)方法是创建 JPanel 子类。

识别 bean 并将其用作 GUI builder 中的可视化容器有下列要求:

注意 1:在容器中可能有一些子组件,但是必须有一个已定义的“container delegate”子容器(该 container delegate 必须是空的,且有一些布局)。通过为 bean BeanInfoBeanDescriptor 设置 containerDelegate 值可以指定 container delegate,设置的值应是从 bean 获得 container delegate 的方法名(例如,在这里 JFramegetContentPane 方法,所以要注意在扩展 JFrame 时不要使用相同的方法)。

MyContainerBeanInfo(对于 MyContainer bean)中 getBeanDescriptor() 方法的示例:

    public BeanDescriptor getBeanDescriptor() {

        BeanDescriptor desc = new BeanDescriptor(MyContainer.class);
        desc.setValue("containerDelegate", "getInnerPane");
return desc;
    }

注意 2: 对于相反的情况 - 即有一个被视为非容器的容器子类,一旦它包含一些组件,您不需要注意上述情况。(这违反了上述 NetBeans 默认忽略的要求。)如果您要完全正确,则将 BeanDescriptorisContainer 属性设置为 Boolean.FALSE,与上述类似。

适用于: NetBeans 3.6、4.0、4.1、5.0;   Platforms:所有平台;

我怎样创建单选按钮组?

使用 Palette 的 ButtonGroup 组件:

  1. 向窗体添加 ButtonGroup(将其作为非可视化 bean)。
  2. 选择您要成组的所有单选按钮,设置它们的 buttonGroup 属性(从组合框选择组)。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我怎样在 JTabbedPane 中设置选项卡名称?

选择代表选项卡的组件(通常是 JPanel),并转到 Inspector 中的 Layout 属性。您可以在这里设置选项卡标题,工具提示和图标。例如,逐步执行以下步骤。

  1. 创建新的 JFrame
  2. 在 Form designer 窗口中,将 JTabbedPane 组件放到 JFrame 上。
  3. JPanel 组件放到 JTabbedPane 上。将出现一个选项卡。
  4. Inspector 中选择 JPanel,然后单击 JPanelLayout 选项卡。
  5. 将显示 Tab IconTab TitleTab Tooltip 属性,并可以进行修改。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我可以更改已创建窗体的类型吗?

这需要更改窗体超类。不直接支持这种情况,但通过下面步骤可以实现。例如,我们想将 JFrame 窗体更改为 JPanel 窗体:

  1. 打开 JFrame 窗体,并移除与目标类型(在我们的例子中,移除 windowClosing 事件及菜单栏(如果设置了),这些无法在 JPanel 中使用)不兼容的任何事件。
  2. 保存并关闭窗体。
  3. Source 视图中,仅打开 java 文件(使用上下文菜单的 Edit 操作)。
  4. 将超类更改为所需的类 (javax.swing.JPanel)。
  5. 保存并关闭 java 文件。
  6. 再次打开窗体 -- 自动为新类型重新生成代码(在我们的例子中,所有 getContentPane() 调用将消失)。
  7. 保存窗体,且您已更改已创建窗体的类型。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

有恢复默认 palette 的方法吗?

如果我从默认的 Palette 内容中删除了一些类别或 beans(无意或有意的),您可以按照下面方法进行恢复:

  1. 退出 IDE。
  2. 转到用户目录并转到 config/Palette 子目录。在这个目录中,从默认 palette 删除的文件或目录表示为空文件,其名称以 _hidden 为前缀。
  3. 删除这些 _hidden 文件,使 palette 类别或条目重新出现在 IDE。

适用于: NetBeans 3.6、4.0、4.1;   Platforms:所有平台;

我可以通过扩展其他窗体来创建窗体吗?

假如您想创建一个窗体,作为其他窗体(对基窗体进行扩展)的基窗体(超类)。您可以按通常做法来创建基窗体,但是必须满足创建定制的容器 bean中描述的要求。

若要创建对基窗体进行扩展的窗体,请使用 Bean Form 模板,并将其超类设置为基窗体类。

其他注意事项:

迭代开发的提示:

如果您在基窗体中进行了更改,不要忘记进行编译。如果同时打开了一些扩展窗体,他们不会自动进行更新 -- 您必须重新打开他们以加载新基类(在各窗体中,按 Ctrl+R 可以实现快速操作)。

如何运行并发布我在 NetBeans 中创建的 GUI 应用程序?

Matisse GUI builder 使用一个外部库,包含各种与布局有关的扩展。您可以在 NetBeans 库管理器的 Swing Layout Extensions 下找到这些扩展库。他们可以自动地添加到项目的类路径中。当您构建主项目时,swing-layout-version.jar 文件被复制到项目的 dist/lib 文件夹中,且已构建项目的 JAR 与库 JAR(通过 manifest 文件中的类路径条目)相链接,这样您可以通过下面语句运行它:

java -jar myproject.jar

若要发布应用程序,只需打包 dist 文件夹下的所有内容。还有一个自述文件描述了所有细节。

如果出现问题,比如您遇到了如下错误:

java.lang.NoClassDefFoundError:org/jdesktop/layout/GroupLayout$Group

请确保 Swing Extension Library 位于主项目的类路径上(转到项目属性),并重新构建项目。

您还可以在 NetBeans 安装目录中找到库文件,如果您想手动进行处理:

ide6/modules/ext/swing-layout-version.jar

有关 Swing Layout Extension 库的详细信息,请访问 swing-layout project home page

适用于: NetBeans 5.0;   Platforms:所有平台;

如何将 swing-layout-version.jar 库打包到我的应用程序 JAR?

已在 Matisse 中开发了您的 Swing 应用程序(使用“Free Design”布局),您可以将所需的 swing-layout-version.jar 库打包到您的应用程序 JAR 文件中。

要求:

Files 选项卡打开您项目的 build.xml,并插入:

    <target name="-post-jar">
        <jar update="true" destfile="${dist.jar}">
            <zipfileset src="${libs.swing-layout.classpath}"/>
        </jar>
    </target>

F11 以构建您的项目。这个 Ant 目标会将 swing-layout.jar 绑定到您的发布 JAR 文件中。

您可以使这个 Ant 目标适合不同的要求。

注意:默认优先的方式是单独发布 swing-layout-version.jar 文件,如同 How to run and distribute... 所描述的那样。

适用于: NetBeans 5.0;   Platforms:所有平台;

-- ClaudioMiranda - 2005 年 11 月 15 日

Matisse:我怎样一次添加多个 GUI 组件?

在 Mattisse GUI Builder 中,您可以插入多个相同类型的 GUI 组件,而不必转到 palette 再返回:

  1. 在 Palette 中 选择 GUI 组件,并释放鼠标。
  2. 将鼠标移动到 Frame — 组件将跟随光标移动。在 Frame 内,您会看到准线,提示组件间的最佳间距。
  3. 按住 Shift 键单击每一个要放置到 Panel 中的组件实例。
  4. 释放 Shift 键并单击,插入最后一个实例。

适用于: NetBeans 5.0;   Platforms:所有平台;

Generate Mnemonics Code 选项的用途及其工作方式?

选中 Generate Mnemonics Code 选项后,通过在文本属性中使用“&”,而不是分别设置文本属性和助记符属性,您可以定义标签和按钮的助记符。从而允许精确的助记符定义和容易的国际化。但是,这种功能需要 org.openide.awt.Mnemonics 类,因此,仅当您开发在 NetBeans IDE 中使用的窗体时,才激活该选项。

“Mnemonics”属性有三个层次。
A. Tools->Options->Advanced Options->GUI Builder->Generate Mnemonics Code
B. 窗体根节点(Inspector 的根节点)的 Generate Mnemonics Code 属性
C. 组件的 Code 属性中的 Generate Mnemonics Code 属性

最后一个层次指定了是否将 Mnemonics 支持用于特定的组件。如果未设置,则从 B 得到/继承值。B 的初始值(如,创建窗体时设置的值)从 A 得到。A 的用途就是为新创建的窗体提供默认的 B 值。如果您要更改现有窗体的该选项,您必须在 B 层次或 C 层次进行操作。

适用于: NetBeans 4.1 和 5.0;   Platforms:所有平台;




↑返回目录
前一篇: 将现有的 Java 源代码导入到 NetBeans IDE 5.0 中
后一篇: NetBeans IDE 5.0 中的 GUI 构建