Java Bean 內容的自訂程式

自訂程式是附加的對話框,使用者可以啟動來變更 Java Bean 內容。您可以建立自訂程式類別,用來編輯您加到視覺化編輯器的 Java Bean 內容。

自訂程式類別應該實作介面 java.beans.Customizer,也應該是 java.awt.Component 的子類別。自訂程式通常是像 java.awt.Panel 或 javax.swing.JPanel 之類的儲存器,其中含有控制項,可讓您檢視及操作 Java Bean 的內容。 當您從工具列按鈕啟動自訂程式時,自訂程式是在一個具有確定取消按鈕的對話框中進行控管的。

當使用者開啟自訂程式時,系統會提供這個自訂程式目前正在自訂的 Java Bean,作為 public void setObject(Object bean); 方法的一部分。接著自訂程式就可以直接更改引數。

java.beans.Customizer 介面也具有方法 public void addPropertyChangeListener(PropertyChangeListener listener);public void removePropertyChangeListener(PropertyChangeListener listener)。視覺化編輯器會在自訂程式上,將它自己新增為接聽器,如果自訂程式即將重新整理「設計」視圖上的 Java Bean 外觀, 它應該使用具有任何一組引數的任何一種 firePropertyChange(... 方法,來呼叫其接聽器,以標記內容的變更。

當使用者按一下確定時,視覺化編輯器會嘗試判斷自訂程式對 Java Bean 所做的變更內容,這樣它才能更新 Java 程式碼。為了做到這點,視覺化編輯器會在啟動自訂程式之前,取得所有 Java Bean 內容的副本, 然後再將它們與自訂程式關閉時的內容互相比較。 如果有任何內容不一樣(將 false 傳回 equals 方法),就會判斷它已經變更。為了判定內容所用的 set 方法的引數, 系統遂在 java.beans.PropertyDescriptor 建立內容編輯器。 然後,以 public void setValue(Object)public String getJavaInitializationString(); 來呼叫它。同樣地,當您按一下取消時,因為自訂程式已經變更了 Java Bean,視覺化編輯器便會查詢內容集,並重設任何與其起始狀態不同的內容。

如果自訂程式是不需要在對話框內執行最上層 Shell(如 java.awt.Frame 或 javax.swing.JFrame),視覺化編輯器便會按原狀執行自訂程式。 由於這種類型的自訂程式需自行負責本身的一組按鈕, 而且視覺化編輯器也無從得知它已被取消或確認, 因此每當自訂程式關閉時,都會查詢最上層內容,檢查它們是否已經變更。 因此,如果自訂程式執行取消作業時,都必須這麼做,以確定 Java Bean 的內容已經還原成起始狀態。

在撰寫自訂程式之後,您必須將它設在 Java Bean 之 BeanInfo 類別的 Bean 描述子中:

public class MyClassBeanInfo extends SimpleBeanInfo {
    public BeanDescriptor getBeanDescriptor() {
        return new BeanDescriptor(MyClass.class,
MyCustomizer.class);
    }
}

母主題: 延伸 Java 視覺化編輯器

(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.