你好,我想为组合框设置背景,我必须从白色以外的另一种颜色,并且在渲染期间,当用户单击从项目中选择时,我如何使用synth实现?
提前感谢!
我发现仅仅依靠list的属性是不足以创建我想要的悬停效果的。我尝试了前面答案的代码,但是当我将鼠标悬停在元素上时,我只能更改文本颜色(而不是整个单元格的颜色)。默认情况下(在"Metal"中),JComboBox列表将高亮应用于整个单元格。通过试错,我发现下面的组合"ComboBox"。listRenderer"样式和"List"样式启用默认效果。在我的示例中,该列表具有褐色背景,黑色文本和悬停时的灰色高亮。
<style id="ComboBoxListRenderer">
<opaque value="true"/>
<state>
<color type="TEXT_FOREGROUND" value="BLACK" />
</state>
</style>
<bind style="ComboBoxListRenderer" type="name" key="ComboBox.listRenderer"/>
<style id="ListStyle">
<opaque value="true" />
<insets top="0" left="0" bottom ="0" right="0" />
<state>
<color type="BACKGROUND" value="#E0CEB0" />
<color type="TEXT_BACKGROUND" value="#666666" />
</state>
解决方案是在组合框使用列表来显示其内部内容之后,所以这应该被改变…所以我做了:
<style id="style">
<opaque value="TRUE"/>
<state>
<color value="WHITE" type="TEXT_FOREGROUND"/>
<color value="RED" type="TEXT_BACKGROUND"/>
<color value="RED" type="BACKGROUND"/>
</state>
<state value="SELECTED">
<color value="RED" type="TEXT_FOREGROUND"/>
<color value="WHITE" type="TEXT_BACKGROUND"/>
</state>
'