我正在使用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部分。
答案 0 :(得分:1)
documentation for KeyEvent.getKeyCode()非常明确:
返回:键盘上实际键的整数代码。 (对于KEY_TYPED事件,keyCode为VK_UNDEFINED。)
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检查。