Visual Editor は、ビジュアル・クラスで設計されたように、Java コードを生成し、構文解析します。Visual Editor は、生成した Java コードに対して特定のスタイルを使用し、また、Java コードの構文解析には規則があります。
Visual Editor for Java が生成する有効な Java コードは、適切にコンパイルし、実行することができます。また、Visual Editor は、既存の Java コードを構文解析するときに、規則を使用して、「設計」ビュー内で視覚化するコードの要素を決定します。
「設計」ビューで表示するためのコードの構文解析の規則
コードが以下の基準の
いずれかを満たしている場合、Visual Editor for Java は、「設計」ビュー内でコードを視覚化しようとします。
このほかに、グラフィカルな「設計」ビューでコンポーネントを視覚化する前に Visual Editor が確認する必要のある、以下のような要件があります。
- フィールドが、get メソッド内でインスタンス生成されていること。
あるいは、Bean が、Visual Editor の「設定」ページの「パターン・スタイル」タブにリストされている初期化メソッドで初期化されていること。
- 行にコンパイル・エラーがないこと。
- クラスのロードおよびインスタンス化が有効であること。
- ほとんどの配列初期化式が評価不能であること。
- メソッドの複合引数は、引数を作成するエンティティーがモデル化されている限り、理解可能です。たとえば、+ オペランドを使用するストリング連結を含む式は、ほとんどの場合、適切に評価されます。
ほとんどの式は正常に構文解析されますが、すべての式が正しく評価できるわけではありません。
評価できない場合は、ビュー内の Java Bean に警告符号が表示され、その Bean が「設計」ビューまたは「Java Bean」ビューで選択されたときに、失敗の理由が状況表示行に表示されます。警告アイコンは、キャンバスにも表示されます。

Visual Editor によって生成されたコード
- Visual Editor は、initialize() メソッドを呼び出すデフォルトのコンストラクターを生成します。このメソッドは、クラスのプロパティーの値を設定します。
- アプレットの場合、初期プロパティー値を設定するコードは init() です。このコードは、アプレット・ブラウザー自体によって実行されるので、コンストラクターからは呼び出されません。
- オプション: Visual Editor が、コンポーネント用に try{}catch() ブロックを生成するように指定することができます。このブロックは、初期化中にスローされるすべての例外を連続してキャッチするので、例外が抑止されるというリスクが大きくなります。したがって、その代わりに例外をパスさせるほうが適しています。このオプションは、Visual Editor の「設定」() の「コード生成」タブで設定できます。以下のコードは、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;
}
- オプション: Visual Editor が、生成する各式にマーキングするコメントを追加するように指定することもできます。これは、手書きのコードと生成されたコードを区別する際に役立ちます。以下のコード行は、このようなコメントの例です。
this.add(getJPanel(), null); // Generated
このオプションをオンにするには、Visual Editor の設定の「コード生成」タブの「新しい式のコメントを生成」チェック・ボックスを選択します。
- Swing/AWT の場合、Visual Editor は単一の Java Bean をインスタンス化して戻す getPanel() などのメソッドを生成しますが、これは必要条件ではありません。
1 つのメソッドにより複数の Java Bean をインスタンス化できるので、そのメソッドの戻り値は、フィールドが Java Bean であるかどうかを認識するためには重要ではありません。
フィールド anOKButton および ivjTableModel を Java Bean として組み込むには、それらのフィールドをそのクラスの get メソッド内でインスタンス化する必要があります。
- SWT の場合、Visual Editor はコンポジットを拡張するクラスごとに private void createComposite() メソッドを生成し、子の Bean はすべて同一のメソッド内で初期化されます。
- 編集されたクラスが Java Bean を拡張する場合、編集されるインスタンスは 「this」 パーツと呼ばれる特殊な
Java Bean で表現されます。「this」パーツは「設計」ビューや「Java Bean」ビューから削除できません。
「this」パーツのプロパティーの初期設定メソッドは initialize() メソッド内で行われます。「this」 パーツは、「プロパティー」ビュー上での設定が可能なプロパティーがある場合に、
「設計」ビューと「Java Bean」ビューのみに表示されます。プロパティーに対する set メソッドが initialize() メソッド内で生成されるか、
(クラスが java.awt.Applet を拡張している場合には) init() メソッドが使用されます。
- 編集されたクラスが org.eclipse.ui.IWorkbenchPart を実装する場合、子の制御に対して生成されたコードは createPartControl(Composite parent) メソッドに追加されます。