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

Java 在Swing中,是否有设置JList禁用前景颜色的属性?,java,swing,jlist,Java,Swing,Jlist,在Swing中,是否有设置JList禁用前景颜色的属性 我正在使用Netbeans GUI builder,我想在资源属性文件中添加一个属性,该属性在禁用JList时将JList中文本的颜色设置为不同的默认值。使用Nimbus LAF时,会有不同的颜色,因为禁用时文本为灰色,启用时文本为黑色。我只是不希望它在残疾时变成灰色 标准的前景色就是。前景色 谢谢。如果有要设置的属性,那么程序应该显示要更改的属性。我没有看到Metal或Windows LAF的属性,因此它可能表示这是在UI代码中直接控制的

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

我正在使用Netbeans GUI builder,我想在资源属性文件中添加一个属性,该属性在禁用JList时将JList中文本的颜色设置为不同的默认值。使用Nimbus LAF时,会有不同的颜色,因为禁用时文本为灰色,启用时文本为黑色。我只是不希望它在残疾时变成灰色

标准的前景色就是。前景色


谢谢。

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

默认ListCellRenderer扩展了
JLabel
。在其
getListRenderComponent
方法中,它根据传入的
JList
设置其启用状态

BasicLabelUI
中,用于绘制禁用的
JLabel
文本的代码执行了一些工作,以使用阴影效果绘制文本。在许多子类中,您可以找到查找
“Label.disabledForeground”
UI属性的代码。似乎在查找标签。禁用文本“

您有两个选择:

  • 您可以在
    UIManager
    中设置
    “Label.disabledText”
    属性,这将使所有被禁用的
    JLabel
    实例和子类采用此颜色
  • 您可以为
    JList
    创建一个自定义呈现程序,该呈现程序测试
    JList
    的启用状态,然后执行您想要的任何自定义代码-或者,如果您想让启用状态测试看起来相同,而不管其启用状态如何,则完全忽略启用状态测试

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

    感谢您的提示。我忘了渲染器。最终扩展了DefaultListCellRenderer,覆盖了GetListRenderComponent,调用了超级GetListRenderComponent,并在返回之前调用了setEnabled(true)。这正是我真正想要的。