isShiftDown, когда JButton нажата? - PullRequest
5 голосов
/ 08 апреля 2011

Привет всем
У меня есть JFrame, и я добавил JButton к этому JFrame.
Также я добавил ActionListener в мой JButton.
Теперь, пожалуйста, конвертируйте этот псевдокод в Java:

public void actionPreformed(ActionEvent e){
    if (isShiftDown)
        print "Shift is Down.";
    else
        print "Shift is Up.";
}

На самом деле я хочу знать isShiftDown, когда мой JButton нажал или нет.

Спасибо.

1 Ответ

6 голосов
/ 08 апреля 2011

заменить isShiftDown на

(e.getModifiers() & InputEvent.SHIFT_MASK) != 0

(e.getModifiers() & ActionEvent.SHIFT_MASK) != 0

getModifiers () возвращает битовую маску всех модификаторов, нажатых во время события (alt, ctrl, shift ...), которое вы можете поразрядно - и получить статус одного из них. Почти то, что написано в документе.

Редактировать: Начиная с Java 9 рекомендуется использовать InputEvent.SHIFT_DOWN_MASK

Edit2: В этом случае ( ActionEvent # getModifiers () (Java SE 9 & JDK 9) ) следует использовать ActionEvent.SHIFT_MASK вместо InputEvent.SHIFT_MASK

...