大家好
我有一个JFrame,并且已经向该JFrame中添加了一个JButton。
另外,我已经在我的JButton中添加了一个ActionListener。
现在,请将此伪代码转换为Java:

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

实际上,我想知道是否按下我的JButton时的isShiftDown。

谢谢。

最佳答案

用替换isShiftDown(e.getModifiers() & InputEvent.SHIFT_MASK) != 0(e.getModifiers() & ActionEvent.SHIFT_MASK) != 0
getModifiers()返回可以按位获取事件(alt,ctrl,shift ...)期间按下的所有修饰符的位掩码,并获取其中之一的状态。它在文档中说的差不多。

编辑:从Java 9开始,建议使用InputEvent.SHIFT_DOWN_MASK
编辑2:在这种情况下(ActionEvent#getModifiers() (Java SE 9 & JDK 9)),应使用ActionEvent.SHIFT_MASK而不是InputEvent.SHIFT_MASK

  • ActionEvent.SHIFT_MASK:1
  • InputEvent.SHIFT_MASK:1 @Deprecated(since =“9”)
  • InputEvent.SHIFT_DOWN_MASK:64
  • 09-18 11:03