У меня есть приложение WorldWind, основанное на Java SDK. Он имеет отличный обработчик событий для обнаружения, когда вы нажимаете на объекты, но я столкнулся с проблемой. Хотя я могу щелкнуть и выбрать отдельные объекты, я не могу определить, нажимает ли пользователь клавишу управления, когда они нажимают (если они хотят выбрать несколько объектов). Я могу реализовать обработчики событий как для мыши, так и для клавиатуры, но я не могу на всю жизнь понять, как связать их вместе. Как я могу заставить мой слушатель прослушать систему для списка нажатых клавиш?Опрос для нажатых кнопок в Java
1
A
ответ
5
Вы можете вызвать getModifiers() и побитовое сравнить, чтобы увидеть, если ключ управления (или сдвиг ключ был подавлен во время мероприятия.
public void mouseClicked(MouseEvent e) {
if((e.getModifiers() & ActionEvent.CTRL_MASK) > 0) {
// Control key depressed
}
}
1
Для MouseEvent, вы могли бы просто назвать getModifiers(), чтобы получить маску из клавиш-модификаторов (Shift/контроль/альт и т.д.) ключи, которые прижимаются.
в общем случае, используйте переменную, чтобы связать их вместе?
Ваши keyhandler наборы/очищает переменную, когда он регистрирует нажатие клавиши , ваш mouselistener проверяет t шляпу.
Если вам нужно разбить их немного больше, просто создайте экземпляр, к которому обращаются как к вашему слушателю, так и к прослушивателю.
Вы избили меня и с фактическим кодом. +1 –