KeyEvent 不理解 ENTER 键

KeyEvent doesn't understand ENTER key

我正在使用 java.there 创建一个记事本,似乎很小 problem.Java 没有得到关于 ENTER 条件的代码行 key.It 理解 ctrl 和 Alt.but not 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:It 在代码的 KeyTyped 部分。

documentation for KeyEvent.getKeyCode() 很清楚:

Returns: the integer code for an actual key on the keyboard. (For KEY_TYPED events, the keyCode is VK_UNDEFINED.)

相反,KeyEvent.getKeyChar() 表示:

KEY_PRESSED and KEY_RELEASED events are not intended for reporting of character input. Therefore, the values returned by this method are guaranteed to be meaningful only for KEY_TYPED events.

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

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

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