3

我正在为组合框蒙皮。组合框由多个子组件组成,其中一个是编辑器。
我编写了一个自定义编辑器,它具有一些自定义功能,并且我曾经combobox.setEditor(new CustomComboEditor())设置自定义编辑器。我在我的皮肤 xml 文件中为编辑器定义了皮肤标签,如下所示:

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在上面的标签中用作键。

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

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

4

2 回答 2

0

我猜 Nisha,您还需要根据要求从 ComboBoxEditor 类中覆盖其他方法。就像您可能还必须在 getItem() 中进行修改一样。

于 2012-10-18T14:45:24.620 回答
0

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

于 2012-10-18T14:32:16.307 回答