我正致力于为Combobox设置皮肤。组合框由多个子组件组成,其中一个子组件是编辑器
我编写了一个自定义编辑器,它有一些自定义函数,我使用combobox.setEditor(new CustomComboEditor())
来设置自定义编辑器。
我在skin xml文件中为editor编写了skin标签,如下所示:
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 :(得分:0)
您可以从SynthComboBoxEditor覆盖createEditorComponent()并创建一个带有2个标签的按钮,并将此按钮作为您的编辑器返回。 同时覆盖setItem()方法,以便分别为这两个标签设置文本。
答案 1 :(得分:0)
我想Nisha,你需要根据需要覆盖ComboBoxEditor类中的其他方法。 就像你可能必须在getItem()中修改一样。