可編輯的組合框

當控制項產生器建立「可編輯的組合框」之取出元及設定元時,就預設值 而言,它會傳回設定元中的「字串」並採用取出元中的字串參數。 若將設定元變更為採用「物件」類別,並將取出元變更為傳回「物件」類型, 會很有幫助。 這可讓您使用 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 */ }
     }