視覺化編輯器可在您設計視覺化類別時產生和剖析 Java 程式碼。視覺化編輯器以特定的樣式來表示產生的 Java 程式碼,並以自己的規則來剖析 Java 程式碼。
Java 視覺化編輯器會產生可以適當地編譯和執行的有效 Java 程式碼。此外,當視覺化編輯器剖析現有的 Java 程式碼時,
它會以規則來判斷該採用程式碼的哪些元素,嘗試在「設計」視圖中視覺化。
剖析程式碼以顯示在「設計」視圖上的規則
如果程式碼符合下列
任何準則,Java 視覺化編輯器會嘗試在「設計」視圖中呈現程式碼:
在圖形化「設計」視圖上呈現元件之前,視覺化編輯器會檢查其他需求:
- 必須在 get 方法中,建立欄位的實例;
或者該 Bean 必須由視覺化編輯器之「喜好設定」頁面的「型樣樣式」標籤所列的起始設定方法,來加以起始設定。
- 指令行中不得有編譯錯誤
- 載入和建立實例的類別必須是有效的。
- 無法評估大部分的陣列起始設定表示式。
- 只要塑造出構成引數的實體,就不難了解方法的複雜引數。例如,以 + 運算元連接字串的表示式,在大多數情況下可正確評估。
大部分的表示式都會順利完成剖析,但不是所有的表示式都能正確評估。在這種情況下,視圖中會針對 Java Bean 顯示警告符號,而且當在「設計」視圖或 Java Bean 視圖中選取了這個 Bean,則失敗的原因也會顯示在狀態行中。畫布上也會顯示警告圖示:

利用視覺化編輯器所產生的程式碼
- 視覺化編輯器會產生呼叫 initialize() 方法的預設建構子,而這個方法會設定類別的內容值。
- 以 Applet 來說,設定起始內容值的程式碼稱為 init()。
這個程式碼不是由建構子呼叫,因為它將由 Applet 瀏覽器本身執行。
- 選用作業:您可以指定視覺化編輯器為元件產生 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); // 已產生
如果要開啟這個選項,請在視覺化編輯器喜好設定的「產生程式碼」標籤上,選取產生新表示式的註解勾選框。
- 就 Swing/AWT 來說,雖然視覺化編輯器會產生 getPanel() 之類的方法,以建立並傳回單一 Java Bean 的實例,不過,這不是必要條件。一個方法可以建立多個 Java Bean 的實例,且該方法的回覆值對於辨識欄位是否為 Java Bean 並不重要。因此如果要將 anOKButton 和 ivjTableModel 欄位併入為 Java Bean,
就必須在類別中的 get 方法內建立它們的實例。
- 以 SWT 而言,視覺化編輯器會為每一個延伸 Composite 的類別產生 private void createComposite() 方法,
且在相同的方法內起始設定任何子項 Bean。
- 如果已編輯的類別繼承了 Java Bean,正在編輯的實例便會呈現一個名為 'this' 組件的特殊 Java Bean。'this' 組件不能從「設計」視圖或 Java Bean 視圖中刪除,而且其內容的起始設定方法需在 initialize() 方法中進行。
如果有任何內容可以在「內容」視圖中設定,'this' 組件就只會顯示在「設計」視圖和 Java Bean 視圖中。這些內容的 set 方法會在 initialize()方法中產生,但是如果該類別繼承了 java.awt.Applet,則會使用 init() 方法。
- 如果編輯的類別實作 org.eclipse.ui.IWorkbenchPart,子控制項產生的程式碼會新增至 createPartControl(Composite parent) 方法。