屬性為陣列或 List 時,提供 getXxx(int index)/setXxx(int index, Type value) 方法,Introspector 自動識別。
屬性變更時觸發 PropertyChangeEvent,通知註冊的 PropertyChangeListener。需在 setter 中發送事件:
public void setValue(int v) {
int old = value;
value = v;
changes.firePropertyChange("value", old, value);
}
允許監聽器否決變更。Setter 拋出 PropertyVetoException:
public void setValue(int v) throws PropertyVetoException {
changes.fireVetoableChange("value", value, v);
value = v;
}
實作 PropertyEditor 介面,並透過 BeanInfo 關聯,讓屬性表顯示自定義 UI(如顏色選擇器、下拉選單)。
提供 BeanInfo 類自定義屬性/事件/方法描述符;在 FeatureDescriptor 設定 expert 標誌,區分基礎與進階特性。