在KeyTyped
方法中,如何判断是否按下 Backspace 或 Esc ?
答案 0 :(得分:17)
假设您已正确附加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和KeyEvent时检测键盘输入的所有Java虚拟键码的列表。有关KeyListeners的更多信息,请访问:How to Write a Key Listener。要按要求使用keyTyped方法,请参阅gangqinlaohu's answer。
答案 1 :(得分:3)
http://www.fileformat.info/info/unicode/char/8/index.htm
当arg0.getKeyChar()
转换为int:(int)arg0.getKeyChar()
时,退格键会出现值8,而Esc键会出现值27。
答案 2 :(得分:3)
我知道这是一个非常古老的主题,但我想添加一个答案,我发现在同样的问题上帮助了我。
我正在为Java程序进行聊天输入,最好使用KeyTyped而不是按下和释放(因为它排除了过滤大多数字符的需要)。无论如何我想制作退格删除字符,但.getKeyCode()总是按照文档返回0。但是,您可以使用.getKeyChar()返回字符(可能会显示为方框),并使用转义字符'\ b'进行比较。
if(tmp.getKeyChar().equals('\b')) { ... }
答案 3 :(得分:2)
仅适用于java 7 / jdk1.7及更高版本:如果您要检查event.getKeyCode()
,请尝试使用event.getExtendedKeyCode()
方法。如果是后退空间,它将返回正确的代码(在本例中为8)而不是普通的0.这样就不需要检查\b
:
if (e.getExtendedKeyCode() == KeyEvent.VK_BACK_SPACE) {
System.out.println("Backspace pressed");
}
答案 4 :(得分:0)
就我个人而言,我更喜欢将KeyPressed事件用于除字母/数字之外的其他键,因为当您键入Backspace或Enter键时,实际上每个人都没有输入任何内容。这就是我所做的工作(确保从javafx.scene.input导入KeyCode和KeyEvent)!
MyTextArea.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent event) {
if (event.getCode().equals(KeyCode.BACK_SPACE)){
System.out.println("Success");
}
}
});
请告诉我这是否适合您:)
答案 5 :(得分:-1)
检查以下代码,我希望它能为您效劳。
@FXML
public void keyPresses(KeyEvent ke)
{
if (ke.getCode().equals(KeyCode.BACK_SPACE)) {
System.out.println("It Works Backspace pressed..!");
}
}