Java合成器 - 如何绑定组合的自定义编辑器



我正在致力于剥皮。组合由多个子组件组成,其中一个是编辑器。
我编写了一个具有一些自定义功能的自定义编辑器,并且我使用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用作上述标签中的键。

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

当我尝试为组合设置自定义渲染器时,我会面临同一问题。

您可以从SynthComboboxeditor覆盖CreateDitorComponent(),并创建一个带有2个标签的按钮,然后返回此按钮作为您的编辑器。另外覆盖,setItem()方法,以便您分别设置这两个标签的文本。

我猜是nisha,您需要根据要求也从Comboboxeditor类中覆盖其他方法。就像您可能还必须在getItem()中修改。

最新更新