Java synth - 如何为组合绑定自定义编辑器?

时间:2012-10-18 05:44:35

标签: java swing jcombobox look-and-feel synth

我正致力于为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作为键。

我注意到当我将自定义编辑器设置为我的组合编辑器时,皮肤不会生效 但是,如果我不使用任何自定义编辑器并依赖于编辑器的默认实现,我的皮肤可以工作,但是我打算在我的组合编辑器中使用的功能不会生效。

当我尝试为组合设置自定义渲染器时,我遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

您可以从SynthComboBoxEditor覆盖createEditorComponent()并创建一个带有2个标签的按钮,并将此按钮作为您的编辑器返回。 同时覆盖setItem()方法,以便分别为这两个标签设置文本。

答案 1 :(得分:0)

我想Nisha,你需要根据需要覆盖ComboBoxEditor类中的其他方法。 就像你可能必须在getItem()中修改一样。