Java KeyListener:KeyTyped Backspace,Esc作为输入

时间:2013-03-28 23:24:46

标签: java keylistener backspace

KeyTyped方法中,如何判断是否按下 Backspace Esc

6 个答案:

答案 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..!");
    }
}