我正在使用NetBeans开发Java的GUI,我喜欢将禁用按钮的文本颜色更改为黑色。
使用组合框可以正常使用以下命令:
UIManager.getDefaults().put("ComboBox.disabledForeground", Color.BLACK);
使用按钮时,以下命令无效:
UIManager.getDefaults().put("Button.disabledForeground", Color.BLACK);
或
UIManager.getDefaults().put("Button.disabledText", Color.BLACK);
我希望有人可以帮助我。
提前谢谢你 斯特芬
答案 0 :(得分:1)
UIManager.getDefaults().put("Button.disabledText",Color.RED);
为我工作
答案 1 :(得分:0)
它适用于组合框。
UIManager Defaults将显示可以为您的LAF更改哪些属性。
有没有可行的工作?
不容易。这是UI的一部分。因此,您需要创建并安装自己的按钮UI。有时它相对容易,但大多数时候您需要访问受保护或私有方法。
答案 2 :(得分:0)
这个问题已经很老了。但是,我遇到了同样的问题,没有找到满意的答案。
所以我最终调试了摆动代码。颜色由getColor
中的SynthStyle.class
方法确定。此方法仅对JTextComponent
和JLabel
使用禁用状态的默认值。
看起来,至少对于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();
}
}