2

在 Swing 中,是否有设置 JList 禁用前景色的属性?

我正在使用 Netbeans GUI 构建器,并且我想向资源属性文件添加一个属性,当 JList 被禁用时,该属性将 JList 中的文本颜色设置为不同的默认值。使用 Nimbus LAF,有不同的颜色,因为禁用时文本为灰色,启用时为黑色。我只是不希望它在禁用时变灰。

标准的前景色只是 .foreground。

谢谢。

4

2 回答 2

3

DefaultListCellRenderer延伸JLabel。_ 在其getListRendererComponent方法中,它根据JList传入的状态设置其启用状态。

绘制禁用JLabel文本的代码在BasicLabelUI使用阴影效果绘制文本方面做了一些工作。在许多子类中,您会发现查找"Label.disabledForeground"UI 属性的代码。Nimbus 默认值似乎在寻找"Label.disabledText".

你有几个选择:

  1. 您可以在 中设置"Label.disabledText"属性UIManager,这将使所有被禁用的JLabel实例和子类都采用这种着色。
  2. 您可以为您创建一个自定义渲染器来JList测试 的启用状态,JList然后执行您想要的任何自定义代码 - 或者如果您希望它看起来相同而完全忽略启用状态测试,而不管其启用状态如何。

我建议您采用自定义渲染器方法,因为很难说JLabel属性的更改将显示在哪里,因为该类被用作许多不同组件中的构建块。

于 2010-02-17T05:51:19.183 回答
1

如果有要设置的属性,那么UIManager Defaults程序应该向您显示要更改的属性。我没有看到 Metal 或 Windows LAF 的属性,因此它可能表明这是直接在 UI 代码中控制的。

于 2010-02-16T23:46:58.527 回答