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() ブロックを生成するように指定することができます。
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) メソッドに追加されます。