我正在编写一个应用程序,该应用程序在启动时应检查是否按下了切换键。对于我创建了一个小的类,它负责的是:检查是否按下了切换键
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键,是否有按下Shift键的方法?我知道这可以使用WinAPI,但我更喜欢Javaish的方式。
在此先感谢!
对不起,这是我第一个使用GUI框架的Java程序。我能做些什么来使我的代码更具可读性? – haiyyu 2012-04-08 16:53:17
基本上你在一行中做了太多的操作,使用更多的变量和更少的匿名实体。记住代码是让人们阅读而不是计算机,你的optomizing编译器将主要能够照顾使它有效地运行。 – awiebe 2012-04-08 18:02:21