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

8zzbczxx  于 2022-12-21  发布在  Java
关注(0)|答案(8)|浏览(156)

我正在制作一个游戏,当我用setEnabled(false);禁用一个按钮时,按钮会变成灰色,这与游戏中的其他颜色冲突。当按钮被禁用时,它们是不是可以改变按钮颜色的方法?

qxgroojn

qxgroojn1#

您可以添加HTML编码到您的按钮,这给了很大的灵活性,甚至禁用按钮。

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

lg40wkob2#

如果你说的是文本,那么你也许可以使用UIManager来改变禁用的前景色。

bvhaajcl

bvhaajcl3#

在按钮上调用**setContentAreaFilled(false)**会使按钮看起来像是被禁用的,即使它没有被禁用。然而,它似乎没有起相反的作用。
如果你不需要你的按钮看起来启用,那么这是一个很好的修复。
Oracle文档

9gm1akwq

9gm1akwq4#

您还可以使用JButton.setDisableIcon()设置禁用图标

lx0bsm1f

lx0bsm1f5#

你可能想修改你正在使用的Look and Feel,有很多可以下载,当然你也可以自己做。

ua4mk5z4

ua4mk5z46#

该按钮的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);

**注意:**JButton使用的缺省UI类是ButtonUI

1tu0hz3e

1tu0hz3e7#

最简单的解决方案是:

yourButton.setContentAreaFilled(false);

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

yourButton.setContentAreaFilled(true);
k4emjkb1

k4emjkb18#

我不是100%在这一点上,但我认为你可以覆盖按钮的glasspane油漆方法覆盖它与您选择的颜色。
下面是一个关于容器窗格的教程:
http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html

相关问题