Java KeyListener:KeyTyped Backspace,Esc作为输入

KeyTyped方法内部,如何判断是否按下了BackspaceEsc

假设您已正确附加KeyListener并已实现该KeyListener所需的方法,要检测特定的按键,只需添加以下代码:

 public void keyReleased(KeyEvent ke) { if(ke.getKeyCode() == KeyEvent.VK_BACK_SPACE) { //code to execute if backspace is pressed } if(ke.getKeyCode() == KeyEvent.VK_ESCAPE) { //code to execute if escape is pressed } } 

可以在以下链接中找到KeyEvent类javadoc: KeyEvent javadocs 。
在那里,您可以找到用于在实现Java KeyListeners和KeyEvents时检测键盘输入的所有Java虚拟键码的列表。 有关KeyListeners的更多信息,请参见: 如何编写密钥监听器 。 要使用keyTyped方法,请参阅gangqinlaohu的答案 。

http://www.fileformat.info/info/unicode/char/8/index.htm

arg0.getKeyChar()转换为int: (int)arg0.getKeyChar() ,退格键出现值8,Esc键出现值27。

我知道这是一个非常古老的主题,但我想添加一个答案,我发现在同样的问题上帮助了我。

我正在为Java程序进行聊天输入,最好使用KeyTyped而不是按下和释放(因为它排除了过滤大多数字符的需要)。 无论如何我想制作退格删除字符,但.getKeyCode()总是按照文档返回0。 但是,您可以使用.getKeyChar()返回字符(可能会显示为方框),并使用转义字符’\ b’进行比较。

 if(tmp.getKeyChar().equals('\b')) { ... } 

仅适用于java 7 / jdk1.7及更高版本:如果要检查event.getKeyCode() ,请尝试使用event.getExtendedKeyCode()方法。 在后退空间的情况下,它将返回正确的代码(在这种情况下,8)而不是普通的0.这样就不需要检查\b

 if (e.getExtendedKeyCode() == KeyEvent.VK_BACK_SPACE) { System.out.println("Backspace pressed"); } 

您还可以在keyTyped使用e.getExtendedKeyCode() ,并返回看似正确的非零值。

就个人而言,我更喜欢将KeyPressed事件用于除字母/数字之外的其他键,因为当您键入Backspace或Enter键时,实际上每个人都没有输入任何内容。 这就是我所做的工作(确保从javafx.scene.input导入KeyCode和KeyEvent)!

 MyTextArea.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler(){ @Override public void handle(KeyEvent event) { if (event.getCode().equals(KeyCode.BACK_SPACE)){ System.out.println("Success"); } } }); 

让我知道这是否适合你:)

检查下面的代码,我希望它对你有用。

 @FXML public void keyPresses(KeyEvent ke) { if (ke.getCode().equals(KeyCode.BACK_SPACE)) { System.out.println("It Works Backspace pressed..!"); } }