Установить разные отключенные цвета для двух разных кнопок J? (UIManager.getDefaults меняет обе кнопки) - PullRequest
4 голосов
/ 02 ноября 2011

Я пытаюсь сделать так, чтобы на одной кнопке был отключен текст красного цвета, а на другом отключен текст синего цвета, но при использовании следующего кода все, что он делает, это просто делает их оба красными.

Есть простойспособ исправить это?

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

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Внешний вид определяется по ButtonUI, указанному в выбранном пользователем стиле. Если вы создаете свой собственный L & F, вы можете переопределить getDisabledTextColor(). Этот связанный пример может подсказать, как действовать дальше. Хотя это технически возможно, я не уверен, как пользователи будут интерпретировать разницу.

Хотя это имеет отношение к вашим потребностям, потомки JTextComponent предлагают setDisabledTextColor() для этой цели.

2 голосов
/ 01 ноября 2017

Как говорит 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);
0 голосов
/ 02 ноября 2011
    /**
 * 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

...