當控制項產生器建立「可編輯的組合框」之取出元及設定元時,就預設值 而言,它會傳回設定元中的「字串」並採用取出元中的字串參數。 若將設定元變更為採用「物件」類別,並將取出元變更為傳回「物件」類型, 會很有幫助。 這可讓您使用 ChoiceDescriptors 來決定使用者選項。
如果已偵測到取出元及設定元的物件 (Object) 類型,則系統會希望輸入 ChoiceDescriptor 或物件類型,而非格式化字串。
下列範例假設 Editable 是可編輯的組合框 (ComboBox),它有可能使用雙精度浮點數值 (Double value),或使用系統值,也可能並未設定。
public Object getEditable() { if (m_setting == SYSTEMVALUE) { return new ChoiceDescriptor("choice1","System Value"); } else if (m_setting == NOTSET) { return new ChoiceDescriptor("choice2","Value not set"); } else { return m_doubleValue; } }
同樣地,在已偵測到取出元及設定元的物件類型時,系統會傳回一 物件,該物件是含由已選取選項的 ChoiceDescriptor 或一「物件」類型。
public void setEditable(Object item) { if (ChoiceDescriptor.class.isAssignableForm(obj.getClass())) { if (((ChoiceDescriptor)obj).getName().equalsIgnoreCase("choice1")) m_setting = SYSTEMVALUE; else m_setting = NOTSET; } else if (Double.class.isAssignableFrom(obj.getClass())) { m_setting = VALUE; m_doubleValue = (Double)obj; } else { /* error processing */ } }