如何在Java(NetBeans)中将禁用按钮的文本颜色更改为黑色?

时间:2011-01-28 08:09:27

标签: java user-interface swing button colors

我正在使用NetBeans开发Java的GUI,我喜欢将禁用按钮的文本颜色更改为黑色。

使用组合框可以正常使用以下命令:

UIManager.getDefaults().put("ComboBox.disabledForeground", Color.BLACK);

使用按钮时,以下命令无效:

UIManager.getDefaults().put("Button.disabledForeground", Color.BLACK);

UIManager.getDefaults().put("Button.disabledText", Color.BLACK);

我希望有人可以帮助我。

提前谢谢你 斯特芬

3 个答案:

答案 0 :(得分:1)

 UIManager.getDefaults().put("Button.disabledText",Color.RED);

为我工作

答案 1 :(得分:0)

  

它适用于组合框。

UIManager Defaults将显示可以为您的LAF更改哪些属性。

  

有没有可行的工作?

不容易。这是UI的一部分。因此,您需要创建并安装自己的按钮UI。有时它相对容易,但大多数时候您需要访问受保护或私有方法。

答案 2 :(得分:0)

这个问题已经很老了。但是,我遇到了同样的问题,没有找到满意的答案。

所以我最终调试了摆动代码。颜色由getColor中的SynthStyle.class方法确定。此方法仅对JTextComponentJLabel使用禁用状态的默认值。 看起来,至少对于Nimbus LaF,没有使用默认的“ Button.disabledText”和“ Button[Disabled].textForeground”。

最后,我扩展了JButton并覆盖了getForegroundColor

public class PatchedButton extends JButton {

    public PatchedButton(){
        super();
    }

    public PatchedButton(Icon icon){
        super(icon);
    }

    public PatchedButton(String text){
        super(text);
    }

    public PatchedButton(String text, Icon icon){
        super(text, icon);
    }

    @Override
    public Color getForeground() {
        //workaround
        if (!isEnabled()) {
                return  (Color)UIManager.getLookAndFeelDefaults().get("Button.disabledText");
        }
        return super.getForeground();
    }
}