Я обрабатываю некоторый MouseEvent в приложении GUI с использованием Java Swing.Обнаружение модификаторов Shift на MouseEvent, сгенерированных с помощью нажатия клавиши в swing
С тех пор я анализировал события мыши внутри mousePressed, только для того, чтобы определить, произошло ли нажатие левой или правой кнопки мыши на .
Мой код был:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){
//left click
}else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){
//right click
}
Теперь мое приложение становится все более сложным, и мне нужно также проверить, если кнопка переключения была нажата, когда мышь была оставлена щелчки. Я хотел бы сделать что-то вроде этого:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){
//left click
}
Сейчас это не работает. В частности, если я нажимаю левую кнопку, удерживая SHIFT, isShiftDown возвращает true (rigth. Я ожидал этого), но теперь кажется, что модификаторы также изменены, и сравнение с BUTTON1_DOWN_MASK выходит из строя.
me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed
Что я делаю неправильно? Как я могу исправить свой код?
вы правы. В любом случае ваш код (me.getModifiers() & InputEvent.BUTTON1_DOWN_MASK) не возвращает boolean – Heisenbug
Извините, вы правы. Теперь исправлено. –
извините. Я немного смущен. Кажется, работает точно в обратном порядке: (me.getModifiers() & InputEvent.BUTTON1_DOWN_MASK) == 0. Во всяком случае ... Вы поняли. спасибо – Heisenbug