Windows平台上的Java Swing SHIFT_DOWN_掩码和VK_NUMPAD

Windows平台上的Java Swing SHIFT_DOWN_掩码和VK_NUMPAD,java,swing,key-bindings,Java,Swing,Key Bindings,我正在尝试听shift+numpad键,我在Windows平台上遇到了一些问题 代码如下: // Add keystrokes // i = 96 --> KeyEvent.VK_NUMPAD0 // i = 105 --> KeyEvent.VK_NUMPAD9 for (int i = 96; i < 106; i++) { String text = String.valueOf(i); inputMap.put(KeyStroke.getKeyStro

我正在尝试听shift+numpad键,我在Windows平台上遇到了一些问题

代码如下:

// Add keystrokes
// i = 96 --> KeyEvent.VK_NUMPAD0
// i = 105 --> KeyEvent.VK_NUMPAD9
for (int i = 96; i < 106; i++) {
    String text = String.valueOf(i);

    inputMap.put(KeyStroke.getKeyStroke(i, KeyEvent.SHIFT_DOWN_MASK), text);
    rootPane.getActionMap().put(text, speakerActionN);
}
//添加击键
//i=96-->KeyEvent.VK\u NUMPAD0
//i=105-->KeyEvent.VK\u NUMPAD9
对于(int i=96;i<106;i++){
String text=String.valueOf(i);
inputMap.put(KeyStroke.getKeyStroke(i,KeyEvent.SHIFT\u DOWN\u MASK),text);
rootPane.getActionMap().put(文本,speakerActionN);
}
此代码在Linux平台上运行良好,但可能会被内置的Windows快捷方式覆盖,这会导致不调用键处理程序


有人知道有什么解决方案不会忽略这些快捷方式的使用吗?

很有趣。我编写了一个测试程序,当我在NumLock打开时按键盘键时,Windows似乎为Shift合成了一个按键释放。没有标准的方法来区分这种“假”按键释放,但您可以使用时间戳来猜测,因为手动释放Shift不太可能在随后的按键几毫秒内发生。有趣。我编写了一个测试程序,当我在NumLock打开时按键盘键时,Windows似乎为Shift合成了一个按键释放。没有标准的方法来区分这种“假”按键释放,但您可以使用时间戳来猜测,因为手动释放Shift不太可能在按下后续按键的几毫秒内发生。