如何在Java中更改禁用JButton的外观

13

我正在制作一个游戏,在使用 setEnabled(false); 禁用按钮时,按钮会变成灰色,这与游戏中的其他颜色不协调。有没有一种方法可以在禁用按钮时改变按钮的颜色?

8个回答

8

您可以在按钮中添加HTML代码,这会给禁用的按钮带来更大的灵活性。

Example: button.setText("<html><font color = red>3</font></html>");

快速解决方案运行良好!我和提问者遇到了同样的问题,我正在编写一个使用禁用按钮的小游戏。 - Bernd
这种方法并不适用于所有情况。我正在使用FlatLaf和JDK 11,但这并不起作用。我无法确认它在任何情况下都有效,但我相信@Bernd和这个答案的作者。 - undefined

4

如果您想更改禁用状态下的前景色,可以使用UIManager。请查看UIManager Defaults


4
在按钮上调用setContentAreaFilled(false)会使按钮看起来像是被禁用了,即使它实际上没有被禁用。但是,似乎反过来并不起作用。
如果您不需要按钮看起来已启用,则这是一个不错的解决方法。 Oracle文档

2
按钮的ButtonUI控制禁用文本颜色。幸运的是,您可以进行更改:
button1.setUI(new MetalButtonUI() {
    protected Color getDisabledTextColor() {
        return Color.BLUE;
    }
});
button1.setEnabled(false);
button2.setUI(new MetalButtonUI() {
    protected Color getDisabledTextColor() {
        return Color.RED;
    }
});
button2.setEnabled(false);

NB: JButton默认使用ButtonUI类作为其用户界面类。


2

1

您可能需要修改您正在使用的 外观。有很多可供下载的外观,当然您也可以自己制作。


0

最好且简单的解决方案是:

yourButton.setContentAreaFilled(false);

只需将布尔值更改为 true,即可轻松恢复:

yourButton.setContentAreaFilled(true);

-1

单独的组件没有玻璃窗格。玻璃窗格是为整个框架而设计的。 - camickr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接