開發者可通過三種方式描述 Bean 信息,供構建工具用戶化外觀與行為:
簡單 Bean 可無此三者,構建工具自動透視分析。
public class OurButtonCustomizer extends Panel implements Customizer {
private PropertyChangeSupport changes = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener l) {
changes.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changes.removePropertyChangeListener(l);
}
// 實現圖形化屬性配置界面
}
必須實現屬性變更監聽器管理,供構建工具監聽屬性變化。
public class MoleculeNameEditor extends PropertyEditorSupport {
public String[] getTags() {
return new String[]{"HyaluronicAcid", "Benzene", "buckmisterfullerine",
"cyclohexane", "ethane", "water"};
}
}
構建工具在屬性表中提供下拉選單選擇預定義值。
public class MoleculeBeanInfo extends SimpleBeanInfo {
public PropertyDescriptor[] getPropertyDescriptors() {
try {
PropertyDescriptor pd = new PropertyDescriptor("moleculeName", Molecule.class);
pd.setPropertyEditorClass(MoleculeNameEditor.class);
return new PropertyDescriptor[]{pd};
} catch (Exception ex) { return null; }
}
}
關聯屬性編輯器,定義屬性顯示名、幫助信息等。
java.io.Serializable 接口,字段自動序列化保存transient 或 static以 .jar (ZIP) 格式存儲,包含 MANIFEST 指定 Bean 類。網絡傳輸高效,資源捆綁部署。