Два одновременных слушателя мыши мешают друг другу в Swing - PullRequest
2 голосов
/ 29 декабря 2011

Мой вопрос касается того, как обрабатывать одновременные события мыши с помощью Swing.

Добавлены и MouseMotionListener, и MouseListener, чтобы следовать JPanel.

У меня есть объект, вращение которого происходит согласнок координатам x и y расположения указателей мыши (реализовано методом mouseMoved MouseMotionListener).

У меня также есть MouseListener, который выполняет свои действия в соответствии с реализованным методом mouseReleased ().

Объект вращается аккуратно в соответствии с MouseMotionListener, но проблема возникает при нажатии кнопки мыши.Поскольку мышь теперь перемещается, вращение останавливается, так как очевидно, что JPanel теперь ожидает выполнения метода mouseReleased ().

Любые идеи, каков наилучший способ сделать эти события одновременно, так что вращение в соответствии скоординаты указателей мыши и операции в соответствии с mouseReleased () могут выполняться одновременно, не мешая друг другу?

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

Старая статья, посвященная особенностям потокового свинга:

http://www.javaworld.com/javaworld/jw-08-2007/jw-08-swingthreading.html?page=1

Стоит прочитать, почему и как.

2 голосов
/ 29 декабря 2011

Если вы хотите выполнить два действия в вашем приложении одновременно, вы будете делать это в разных потоках. Когда вам нужно сделать что-то в разных потоках в колебании - вы должны использовать SwingWorker

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