событие кнопки по-прежнему работает с отключенной кнопкой - PullRequest
5 голосов
/ 14 января 2011
private void button_Clicked_download(MouseEvent e) {
      button_dl.setEnabled(false);
      System.out.println("Button Clicked.");
}

Когда я нажимаю кнопку, кнопка выглядит отключенной.Однако кнопка все еще выполняет код под MouseEvent, и я вижу «Кнопка нажата».в консоли отладки.

Как сделать так, чтобы при нажатии кнопки она игнорировала код и действительно отключалась?

Ответы [ 3 ]

11 голосов
/ 14 января 2011

Однако кнопка все еще выполняет код под MouseEvent , и я вижу «Кнопка нажата». в консоли отладки.

Именно поэтому вам не следует использовать MouseListener с JButton, а скорее ActionListener. Конечно, решение очевидно: избавиться от MouseListener и вместо этого добавить ActionListener в интересующий JButton.

1 голос
/ 20 сентября 2012

На самом деле в java есть очень простой способ включить и отключить кнопку, которая использует Mouse Listener.

class HoldListen extends MouseAdapter {

    @Override
    public void mousePressed(MouseEvent e) {
        JButton bt = (JButton)e.getSource();

        if (!bt.isEnabled()) {
            return;
        }

        // Do code 
    }
}

Я нашел ваш вопрос, пытаясь создать нечто подобное, и вот как я решил это. Все методы MouseListener возвращают void, поэтому он работает довольно хорошо. В моей ситуации, возвращаясь к ActionListener, потребовалось бы много дополнительной работы, в то время как MouseListener идеально подходил для этой работы. Нажмите set переменную, которую Release undid и другой поток использовал переменную в текущем моделировании.

1 голос
/ 14 января 2011

вам нужно использовать ActionListener вместо MouseClickListener.

ваша кнопка логически нажата, даже если она отключена, поэтому событие щелчка будет выполнено

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