为两个不同的JButtons设置不同的禁用颜色? (UIManager.getDefaults更改两个按钮)

时间:2011-11-02 00:32:00

标签: java swing colors jbutton

我试图让一个按钮具有禁用的红色文本和另一个禁用的蓝色文本,但是当使用以下代码时,它只是使它们都是红色。

有一种简单的方法可以解决这个问题吗?

UIManager.getDefaults().put("Button.disabledText",Color.BLUE);
button1.setEnabled(false);
UIManager.getDefaults().put("Button.disabledText",Color.RED);
button2.setEnabled(false);

3 个答案:

答案 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