Должен ли doClick находиться в потоке диспетчеризации? - PullRequest
0 голосов
/ 31 июля 2010

Нужно ли, чтобы AbstractButton.doClick находился в потоке диспетчеризации?

Если я смотрю на источник jdk 6, я читаю:

   public void doClick(int pressTime) {
        Dimension size = getSize();
        model.setArmed(true);
        model.setPressed(true);
        paintImmediately(new Rectangle(0,0, size.width, size.height));
        try {
            Thread.currentThread().sleep(pressTime);
        } catch(InterruptedException ie) {
        }
        model.setPressed(false);
        model.setArmed(false);
    }

Я полагаю, что запускать метод сна плохона edt, так что я полагаю, что метод doClic не должен быть в edt, но я не нашел никакой документации по этому вопросу?

Спасибо.

1 Ответ

1 голос
/ 31 июля 2010

Вызов метода doClick () в конечном итоге приведет к генерации ActionEvent, и, следовательно, будет вызван ваш ActionListener. Все слушатели должны выполнить на EDT.

Полагаю, плохо выполнять метод сна на edt,

Ожидается, что это значение сна будет миллисекундами, а не минутами, чтобы имитировать нажатие пользователем кнопки, чтобы вы увидели, что кнопка окрашена в нажатом состоянии, а затем вернулась в нормальное состояние. Таким образом, блокировка EDT для нескольких MS не является проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...