2012-10-18 72 views
3

我正在研究一個Combobox。組合框由多個子組件組成,其中一個是編輯器。
我寫了一個自定義編輯器,它有一些自定義功能,我用combobox.setEditor(new CustomComboEditor())來設置自定義編輯器。 我已經定義編輯皮膚標籤在我的皮膚xml文件,如下圖所示:Java合成 - 如何綁定自定義編輯器的組合?

style id="skinnedComboTextStyle"> 
<state value="MOUSE_OVER"> 
<imagePainter method="textFieldBackground" path="/images/image1.png" sourceInsets="2 2 2 20" /> 
</state> 
<state value="PRESSED"> 
<imagePainter method="textFieldBackground" path="/images/image2.png" sourceInsets="2 2 2 2" /> 
</state> 
</style> 
<bind style="skinnedComboTextStyle" type="name" key="ComboBox.textField" /> 

注意康寶UI合成器的實現是SynthComboBoxUI,它已綁定setName(ComboBox.textField),因此我在上面使用ComboBox.textField關鍵標籤。

我注意到,當我將自定義編輯器設置爲我的組合編輯器時,皮膚不起作用。
但是,如果我不使用任何自定義編輯器並依賴於編輯器的默認實現,我的皮膚可以工作,但是我打算在我的組合編輯器中使用的功能不起作用。

當我嘗試爲組合設置自定義渲染器時,我面臨同樣的問題。

+0

很難說任何切肉刀,張貼[SSCCE](http://sscce.org/) – mKorbel

回答

0

您可以從SynthComboBoxEditor中覆蓋createEditorComponent(),並創建一個帶有2個標籤的按鈕,並將該按鈕作爲您的編輯器返回。 也可以重寫setItem()方法,以便分別爲這兩個標籤設置文本。

0

我猜Nisha,你需要根據需要重寫ComboBoxEditor類中的其他方法。 就像你可能不得不在getItem()中修改一樣。