KeyEvent不理解ENTER键

时间:2017-03-07 20:48:42

标签: java keyboard keyevent

我正在使用java创建一个记事本。这似乎是一个小问题.Java没有得到有关ENTER键条件的代码行。它理解ctrl和Alt.but而不是enter.just跳过那部分!我该怎么办?“

if( !e.isControlDown() && !e.isAltDown() && e.getKeyCode() != KeyEvent.VK_ENTER)
        {
            frame.wholeText.linesList.get(frame.cursor.j).chars.add(frame.cursor.i,c);
            frame.cursor.i += 1 ;
            System.out.println("Entered");
            charMetric = frame.getFontMetrics( frame.getFont() ).charWidth(c) ;
            frame.cursor.setX( frame.cursor.getX() + charMetric );

        }`

PS:当我按下ENTER时它不应该输入这个条件但是确实如此。 PS2:它位于代码的KeyTyped部分。

1 个答案:

答案 0 :(得分:1)

documentation for KeyEvent.getKeyCode()非常明确:

  

返回:键盘上实际键的整数代码。 (对于KEY_TYPED事件,keyCode为VK_UNDEFINED。)

相反,KeyEvent.getKeyChar()说:

  

KEY_PRESSED和KEY_RELEASED事件不用于报告字符输入。因此,此方法返回的值保证仅对KEY_TYPED事件有意义。

KEY_PRESSED和KEY_RELEASED事件生成具有有效keyCode的KeyEvent,但没有keyChar。 KEY_TYPED事件正好相反:它们生成一个带有有效keyChar的KeyEvent,但keyCode始终未定义。

您正在检查KEY_TYPED事件的getKeyCode()值,因此keyCode将始终未定义。

使用e.getKeyChar() != '\n'或使用keyPressed方法执行keyCode检查。