Проверьте, нажата ли кнопка javax.swing.J - PullRequest
2 голосов
/ 21 сентября 2011

Я хотел бы проверить, нажата ли определенная javax.swing.JButton (обычная кнопка) (до ее отпускания).Можно ли вообще проверить, нажата ли кнопка?

Самое простое решение - добавить MouseListener, который будет реагировать на щелчок мыши и отпускать события.Но это не распространяется на случай, когда кнопка была активирована клавишей Enter или любым другим способом.Я не хочу отключать активацию мыши с помощью клавиатуры или другими способами - я просто хочу знать, когда она нажата, не ограничивая ее поведение.

Я пытался прослушать все различные события, и толькона нажатие кнопки реагируют события ActionPreformed (ActionEvent) и StateChanged (ChangedEvent).ActionPreformed выполняется один раз за клик, то есть только после нажатия и отпускания кнопки, так что это не хорошо.StateChanged действительно вызывается несколько раз, когда я нажимаю кнопку, и несколько раз, когда я отпускаю ее.Но объект события включает только информацию об исходном виджете (кнопка) и никакой информации о самом изменении состояния.Это предотвращает выделение того, какое из событий мы хотим поймать.

Заранее спасибо!

1 Ответ

7 голосов
/ 21 сентября 2011

ButtonModel может сделать это, больше здесь или здесь или, может быть, не по теме JMenuItem & ChangeListener @ kleopatra

...