撰寫 Java 程式碼有不同的樣式或方式。視覺化編輯器會針對其產生的 Java 程式碼,使用某種特定的樣式。
Java 視覺化編輯器會產生可以適當地編譯和執行的有效 Java 程式碼。此外,當視覺化編輯器剖析現有的 Java 程式碼時,
它會以規則來判斷該採用程式碼的哪些元素,嘗試在「設計」視圖中視覺化。
可剖析之程式碼的規則
只要程式碼符合下列標準,Java 視覺化編輯器就會在「設計」視圖中,將程式碼視覺化:
視覺化編輯器在圖形式「設計」視圖中,將元件視覺化之前,還有其他基本條件必須檢查:
- 必須在 get 方法中,建立欄位的實例;
或者該 Bean 必須由視覺化編輯器之「喜好設定」頁面的「型樣樣式」標籤所列的起始設定方法,來加以起始設定。
請注意,在下面這個影像中,jbInit、initComponents 和 initialize 方法都被指定為起始設定方法:
- 指令行中不得有編譯錯誤
- 類別必須有效以載入及建立實例
- 大部分的陣列起始設定表示式都不能評估
- 將不會評估包含運算表示式或使用 + 運算元的字串連結的表示式
大部分的表示式都會順利完成剖析,但不是所有的表示式都能正確評估。在這種情況下,視圖中會針對 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 來說,視覺化編輯器會針對每一個延伸複合項的類別,
產生 private void createFoo() 方法,
而且所有的子項 Bean,都是在同一個方法內起始設定。
- 如果已編輯的類別繼承了 Java Bean,正在編輯的實例便會呈現一個名為 'this' 組件的特殊 Java Bean。'this' 組件不能從「設計」視圖或 Java Bean 視圖中刪除,而且其內容的起始設定方法需在 initialize() 方法中進行。
如果有任何內容可以在「內容」視圖中設定,'this' 組件就只會顯示在「設計」視圖和 Java Bean 視圖中。這些內容的 set 方法會在 initialize()方法中產生,但是如果該類別繼承了 java.awt.Applet,則會使用 init() 方法。