Есть ли способ настроить setEnabled (false) в Java? - PullRequest
3 голосов
/ 07 февраля 2011

Допустим, у вас есть JCheckBox, который вы хотите использовать в качестве индикатора включения / выключения. Вы используете setEnabled(false), чтобы отключить щелчки мыши на JCheckBox. Но setEnabled(false) также выделяет текст checkBox и checkBox. Есть ли способ настроить setEnabled(false) так, чтобы не происходило затуманивание?

Если это невозможно, является ли единственным решением что-то похожее на настройку ButtonModel?

Ответы [ 4 ]

5 голосов
/ 08 февраля 2011

Вы можете создать подкласс JCheckBox и переопределить processMouseEvent / processKeyEvent, чтобы ничего не делать.

public class ReadOnlyCheckBox extends JCheckBox {
    public ReadOnlyCheckBox (String text, boolean selected) {
        super(text,selected);
    }

    protected void processKeyEvent(KeyEvent e) {
    }

    protected void processMouseEvent(MouseEvent e) {

    }
}
2 голосов
/ 07 февраля 2011

Расширение JCheckBox позволит вам переопределить метод setEnabled и передать ваш CustomJCheckBox любому коду, ожидающему JCheckBox в качестве параметра. Это должно удерживать вас от необходимости переопределять все остальное из флажка, как для реализации ButtonModel.

Я немного озадачен тем, для чего вы используете флажок - он не включен, но вы все еще хотите, чтобы проверка появлялась или нет, основываясь на каком-то другом параметре? Зачем использовать элемент ввода, в этом случае?

2 голосов
/ 07 февраля 2011

Изменение цвета текста в отключенном JCheckbox было запрошено и остается открытой проблемой в базе данных ошибок Sun:

[6289684] Способ изменения цвета отключенного текста JCheckbox

Посмотрите подробности ошибки для обхода проблемы.

0 голосов
/ 07 февраля 2011

Вы настраиваете Пользовательский интерфейс кнопки , чтобы сделать это.

...