在 Swing 中,是否有设置 JList 禁用前景色的属性?
我正在使用 Netbeans GUI 构建器,并且我想向资源属性文件添加一个属性,当 JList 被禁用时,该属性将 JList 中的文本颜色设置为不同的默认值。使用 Nimbus LAF,有不同的颜色,因为禁用时文本为灰色,启用时为黑色。我只是不希望它在禁用时变灰。
标准的前景色只是 .foreground。
谢谢。
DefaultListCellRenderer
延伸JLabel
。_ 在其getListRendererComponent
方法中,它根据JList
传入的状态设置其启用状态。
绘制禁用JLabel
文本的代码在BasicLabelUI
使用阴影效果绘制文本方面做了一些工作。在许多子类中,您会发现查找"Label.disabledForeground"
UI 属性的代码。Nimbus 默认值似乎在寻找"Label.disabledText"
.
你有几个选择:
"Label.disabledText"
属性UIManager
,这将使所有被禁用的JLabel
实例和子类都采用这种着色。JList
测试 的启用状态,JList
然后执行您想要的任何自定义代码 - 或者如果您希望它看起来相同而完全忽略启用状态测试,而不管其启用状态如何。我建议您采用自定义渲染器方法,因为很难说JLabel
属性的更改将显示在哪里,因为该类被用作许多不同组件中的构建块。
如果有要设置的属性,那么UIManager Defaults程序应该向您显示要更改的属性。我没有看到 Metal 或 Windows LAF 的属性,因此它可能表明这是直接在 UI 代码中控制的。