Java KeyListener:KeyTyped Backspace,Esc作为输入
在KeyTyped
方法内部,如何判断是否按下了Backspace或Esc ?
假设您已正确附加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..!"); } }