当前页面: 开发资料首页 → Netbeans 专题 → GUI 编辑器
摘要: GUI 编辑器 开发 GUI 时,我可以编辑蓝色保护块内的代码吗? 我怎样才能将图标与添加到 palette 的 bean 关联起来? 什么是 .form 文件? 我可以生成现有类的 .form 文件...
是的。使用组件属性的 Code Generation 视图。
实际上对于组件实例是没有限制的 - 您将发现所需做的事情都在组件属性的 Code Generation 视图上。您可以完全替换组件实例化的方式,在创建和初始化前或后添加代码。唯一的差别是该代码存储在 XML .form 文件中,因此重新生成保护代码时包括该代码。
如果您正在编写相当简单的 bean,您可能不想为其使用 GUI editor。但是,您强烈要求编辑保护块中的内容(使用 Code Generation 视图选项 - 您已经完全控制了实例化和初始化),复制您的类并将其粘贴到普通的类模板。您将不能使用窗体编辑器来编辑结果,但是如果您已经建立了基本 gui,则可以那么做。每种方法都让您得到需要的结果 - 请使用您用起来更适合的方法。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
您需要为您的 bean 创建并编译一个 BeanInfo
类。图标由 BeanInfo
的 Icon
属性提供。
快速简单的方法是,在 Projects View 中展开各自的类节点,右键单击 Bean Patters 节点并选择菜单中的 BeanInfo Editor,根据需要编辑属性。
适用于: NetBeans 4.0、4.1; Platforms:所有平台;
.form
文件是可视化窗体编辑器用来存储视图信息的 XML 文件.您不必将其随您的应用程序发布,它仅用于 IDE。但是,如果您要在窗体编辑器中再次打开窗体,则应该保持文件。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
很不幸,不能。
但是,有一些外部工具尝试解决该问题,如 FormGenerator。请查看 contrib.netbeans.org 最新版本。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
是的。
NetBeans IDE 绑定了 Swing Layout Extensions 库(包含 GroupLayout
),且拥有特定的布局管理器 AbsoluteLayout
。设计时,根据需要自动使用库。当您构建您的项目时,项目中使用的库的 JAR 会出现在项目的 dist/lib
目录下。您可以打包整个 dist
目录,得到发布应用程序所需的全部内容。
边注:默认情况下,Matisse GUI builder 会使用 GroupLayout
。AbsoluteLayout
仅为历史原因而保留,不建议用于产品 UI。
适用于: NetBeans 5.0; Platforms:所有平台;
切换到 GridBagLayout,在 Inspector 树中,右键单击 GridBagLayout 节点并从弹出菜单中选择 Customize。会弹出一个非常灵活的 customizer,让您可以方便调整限制。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
最简单(也是推荐的)方法是创建 JPanel
子类。
识别 bean 并将其用作 GUI builder 中的可视化容器有下列要求:
java.awt.Container
子类,
注意 1:在容器中可能有一些子组件,但是必须有一个已定义的“container delegate”子容器(该 container delegate 必须是空的,且有一些布局)。通过为 bean BeanInfo
的 BeanDescriptor
设置 containerDelegate 值可以指定 container delegate,设置的值应是从 bean 获得 container delegate 的方法名(例如,在这里 JFrame
有 getContentPane
方法,所以要注意在扩展 JFrame
时不要使用相同的方法)。
MyContainerBeanInfo
(对于 MyContainer
bean)中 getBeanDescriptor()
方法的示例:
public BeanDescriptor getBeanDescriptor() { BeanDescriptor desc = new BeanDescriptor(MyContainer.class); desc.setValue("containerDelegate", "getInnerPane"); return desc; }
注意 2: 对于相反的情况 - 即有一个被视为非容器的容器子类,一旦它包含一些组件,您不需要注意上述情况。(这违反了上述 NetBeans 默认忽略的要求。)如果您要完全正确,则将 BeanDescriptor
的 isContainer
属性设置为 Boolean.FALSE
,与上述类似。
适用于: NetBeans 3.6、4.0、4.1、5.0; Platforms:所有平台;
使用 Palette 的 ButtonGroup
组件:
ButtonGroup
(将其作为非可视化 bean)。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
选择代表选项卡的组件(通常是 JPanel
),并转到 Inspector 中的 Layout 属性。您可以在这里设置选项卡标题,工具提示和图标。例如,逐步执行以下步骤。
JFrame
。
JTabbedPane
组件放到 JFrame
上。
JPanel
组件放到 JTabbedPane
上。将出现一个选项卡。
JPanel
,然后单击 JPanel
的 Layout 选项卡。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
这需要更改窗体超类。不直接支持这种情况,但通过下面步骤可以实现。例如,我们想将 JFrame
窗体更改为 JPanel
窗体:
JFrame
窗体,并移除与目标类型(在我们的例子中,移除 windowClosing 事件及菜单栏(如果设置了),这些无法在 JPanel
中使用)不兼容的任何事件。
javax.swing.JPanel
)。
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
如果我从默认的 Palette 内容中删除了一些类别或 beans(无意或有意的),您可以按照下面方法进行恢复:
适用于: NetBeans 3.6、4.0、4.1; Platforms:所有平台;
假如您想创建一个窗体,作为其他窗体(对基窗体进行扩展)的基窗体(超类)。您可以按通常做法来创建基窗体,但是必须满足创建定制的容器 bean中描述的要求。
若要创建对基窗体进行扩展的窗体,请使用 Bean Form 模板,并将其超类设置为基窗体类。
其他注意事项:
JFrame
创建窗体时,您会看到 JFrame
)。
迭代开发的提示:
如果您在基窗体中进行了更改,不要忘记进行编译。如果同时打开了一些扩展窗体,他们不会自动进行更新 -- 您必须重新打开他们以加载新基类(在各窗体中,按 Ctrl+R
可以实现快速操作)。
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 日
在 Mattisse GUI Builder 中,您可以插入多个相同类型的 GUI 组件,而不必转到 palette 再返回:
适用于: NetBeans 5.0; Platforms:所有平台;
选中 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:所有平台;