我正在编写一个应用程序,它应该在启动时检查是否按下了 shift 键。为此,我创建了一个负责此的小类:
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
public class KeyboardListener {
private static boolean isShiftDown;
static {
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
new KeyEventDispatcher() {
public boolean dispatchKeyEvent(KeyEvent e) {
isShiftDown = e.isShiftDown();
return false;
}
});
}
public static boolean isShiftDown() {
return isShiftDown;
}
}
但是,如果在应用程序启动时已经按下了 shift 键,这似乎不起作用。以下检查始终执行 else 情况。
if (KeyboardListener.isShiftDown()) {
// ...
} else {
// this always gets executed
}
如果在应用程序启动时已经按下了 shift 键,有没有办法检查它是否被按下?我知道使用 WinAPI 可以做到这一点,但我更喜欢 Javaish 的方式。
提前致谢!