我正在为组合框蒙皮。组合框由多个子组件组成,其中一个是编辑器。
我编写了一个自定义编辑器,它具有一些自定义功能,并且我曾经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
在上面的标签中用作键。
我注意到当我将自定义编辑器设置为我的组合编辑器时,皮肤不会生效。
但是,如果我不使用任何自定义编辑器并依赖编辑器的默认实现,我的皮肤可以工作,但是我打算在我的组合编辑器中拥有的功能不会生效。
当我尝试为组合设置自定义渲染器时,我遇到了同样的问题。