起動時に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キーがすでに押されていた場合に、Shiftキーが押されているかどうかを確認する方法はありますか?WinAPIを使用してこれが可能であることは知っていますが、Java風の方法を使用したいと思います。
前もって感謝します!