Java按键输入与KeyEvent的VK按键不同

问题描述 投票:0回答:2

我试图将我从关键侦听器

KeyEvent.getKeyCode()
获得的关键代码与
KeyEvent.VK_SLASH
之类的代码进行比较,但是当我按下斜杠键时(我知道它是斜杠,因为它显示了 /),比较 (
 if(e.getKeyCode() == KeyEvent.VK_SLASH)
)是错误的。

但是当我将它与

KeyEvent.VK_DEAD_ACUTE
进行比较时,它返回true。

其他键(例如 ABCD 或数字)都可以,但有些键(例如 ` 和 /)是不同的。

这是为什么呢?我该如何解决这个问题?

编辑:其他键(例如 ' )也会受到影响,因为它会产生

. And pressing the
键给我
VK_DEFINED

java awt keylistener keyevent
2个回答
0
投票

也许尝试使用

Key = e.getKeyCode();

然后做

if( Key == KeyEvent.VK_SLASH){
    ...
}

0
投票

获取KeyCodes的方式很奇怪,不知道这是否是你的问题,但这是我发现的。

component.addKeyListener(new KeyListener() {
        public void keyTyped(KeyEvent e) {
            System.out.println(e.getKeyCode());//This will always print 0
        }

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println(e.getKeyCode());//This will the corresponding keycode of whatever key is pressed
        }

        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println(e.getKeyCode());//This will the corresponding keycode of whatever key is pressed
        }
        
    });
© www.soinside.com 2019 - 2024. All rights reserved.