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 检查。
我正在使用 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 检查。