在Java中使用Synth对组合框进行样式化



你好,我想为组合框设置背景,我必须从白色以外的另一种颜色,并且在渲染期间,当用户单击从项目中选择时,我如何使用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>

'

最新更新