可视编辑器在您设计可视类时会生成和解析 Java™ 代码。可视编辑器对其生成的
Java 代码使用特定样式并且具有用于解析 Java 代码的规则。
Java 可视编辑器将生成可正确编译和运行的有效 Java 代码。另外,当可视编辑器解析现有 Java 代码时,它使用规则来确定代码的哪些元素将尝试在“设计”视图中可视化。
解析代码以在“设计”视图中显示的规则
Java 可视编辑器在代码符合以下
任何条件时,将尝试使该代码在“设计”视图中可视化:
在使图形“设计”视图上的组件可视化之前,可视编辑器还会检查其他要求:
- 字段必须在 get 方法中实例化,或必须使用可视编辑器“首选项”页面的“模式样式”选项卡上列出的初始化方法对 bean 进行初始化。
- 行中不能有任何编译错误。
- 类必须可以进行装入和实例化。
- 不能对大多数数组初始化表达式进行求值。
- 只要对组成参数的实体进行了建模,就可以理解方法的复杂参数。例如,大多数情况下都可以对使用加号 (+) 运算符并置字符串的表达式正确求值。
大多数表达式都可成功解析,但是并非能对所有表达式进行正确求值。在此情况下,会对视图中的
Java
bean 显示警告符号,并且在选择“设计”视图或 Java bean 视图上的 bean 时会在状态行中显示失败的原因。
在画布上也会显示警告图标:

由可视编辑器生成的代码
- 可视编辑器生成调用 initialize() 方法的缺省构造函数,该方法设置类的属性值。
- 对于 applet,设置初始属性值的代码称为 init()。
该方法不由构造函数调用,因为它由 applet 浏览器本身执行。
- 可选:您可以指定可视编辑器为组件生成 try{}catch() 块。try{}catch() 将阻止持续捕获在初始化期间抛出的每个异常,并且抑制异常的风险也会增加。
因此,最好是让异常通过。您可以在可视编辑器首选项的“代码生成”选项卡上选择此选项()。
以下代码显示了使用 try{}catch() 块初始化的 JPanel:
private JPanel getJPanel1() {
if (jPanel1 == null) {
try {
jPanel1 = new JPanel();
}
catch (java.lang.Throwable e) {
// TODO: Something
}
}
return jPanel1;
}
以下代码显示没有 try{}catch() 代码块的 JPanel:private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
}
return jPanel;
}
- 可选:您也可以指定可视编辑器添加一个标记其生成的每个表达式的注释。这样可帮助区分手写代码和生成的代码。以下代码行是该注释的类似示例:
this.add(getJPanel(), null); // Generated
要开启此选项,请选中可视编辑器首选项的“代码生成”选项卡上的为新的表达式生成注释复选框。
- 对于 Swing/AWT,尽管可视编辑器生成 getPanel()
之类的方法来实例化并返回单个 Java bean,但这不是必需的。此方法可实例化多个
Java bean,并且此方法的返回值对于识别字段是否为
Java bean 而言并不重要。要作为 Java bean 包括的字段 anOKButton
和 ivjTableModel 需要在类中的 get 方法内实例化。
- 对于 SWT,可视编辑器为扩展“组合体”的每个类生成 private void createComposite() 方法,且所有子代 bean 都在同一个方法中进行初始化。
- 如果编辑的类扩展 Java bean,那么被编辑的实例会用调用“this”部分的特殊 Java bean 表示。不能从“设计”视图或 Java
bean 视图删除“this”部分,且其属性在 initialize() 方法中实例化。仅当存在要在“属性”视图上设置的任何属性时,“this”部分才会在“设计”视图和
Java bean 视图中显示。属性的设置方法是使用 initialize() 方法来生成,如果类将扩展 java.awt.Applet,那么将使用 init() 方法。
- 如果编辑的类实现 org.eclipse.ui.IWorkbenchPart,那么为子代控件生成的代码将添加到 createPartControl(Composite parent) 方法。