Надеюсь, это поможет через 3,5 года всем, кто ищет ответы на ту же проблему:)
Когда вы щелкаете мышью, вы запускаете следующие события.
- MousePressed
- MouseDragged (если вы нажали достаточно сильно, чтобы переместить
курсор немного)
- MouseReleased
- MouseClicked
Я столкнулся с этой самой проблемой, делая события ленивыми в Netbeans, используя их утилиту Forms.
Я обнаружил, что случайное перетаскивание моей мыши между нажатием и выпуском убило событие щелчка.
Работа по назначению или незначительная ошибка JVM и Netbeans? Я не знаю.
В качестве обходного пути я использовал регистрацию событий MousePressed и MouseReleased для имитации щелчка.
Если Нажатие и отпускание не происходят на одном и том же объекте, MouseReleased ничего не сделает.
Если «Нажатие и отпускание» происходят на одном и том же объекте, я вызываю свой метод с соответствующими параметрами для использования события.
Обратите внимание, что, поскольку я обрабатываю щелчки на JFrame, он является единственным объектом свинга, поэтому я передаю объект Point координат мыши и сравниваю оба, обеспечивая их попадание в указанный прямоугольник.