我试图让一个按钮具有禁用的红色文本和另一个禁用的蓝色文本,但是当使用以下代码时,它只是使它们都是红色。
有一种简单的方法可以解决这个问题吗?
UIManager.getDefaults().put("Button.disabledText",Color.BLUE);
button1.setEnabled(false);
UIManager.getDefaults().put("Button.disabledText",Color.RED);
button2.setEnabled(false);
答案 0 :(得分:2)
外观由用户选择的Look& amp;中指定的ButtonUI
确定。感觉。如果您要创建自己的L& F,则可以覆盖getDisabledTextColor()
。相关的example可能会建议如何继续。虽然技术上可行,但我不确定用户将如何解释差异。
虽然它与您的需求相关,但JTextComponent
的后代为此目的提供setDisabledTextColor()
。
答案 1 :(得分:2)
正如thrashgod所说,按钮的ButtonUI
控制禁用的文本颜色。幸运的是,您可以更改按钮的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);
答案 2 :(得分:-1)
/**
* Sets the Color of the specified button. Sets the button text Color to the inverse of the Color.
*
* @param button The button to set the Color of.
* @param color The color to set the button to.
*/
private static void setButtonColor(JButton button, Color color)
{
// Sets the button to the specified Color.
button.setBackground(color);
// Sets the button text to the inverse of the button Color.
button.setForeground(new Color(color.getRGB() ^ Integer.MAX_VALUE));
}
这是我在
上找到的一些代码http://www.daniweb.com/software-development/java/threads/9791
希望它有所帮助!我真的不明白这个问题:P