比较1秒后的字符串长度和相同的字符串

时间:2016-12-22 17:18:56

标签: java javafx

目前,我的应用程序会在发生以下事件时显示谁在键入:

textfield.setOnKeyPressed((keyEvent) -> {                
    if(keyEvent.getCode().isDigitKey() || keyEvent.getCode().isLetterKey() ||
        keyEvent.getCode().isModifierKey() || keyEvent.getCode().isWhitespaceKey() ||
        keyEvent.isShiftDown()){
            whoTypes();
}

但我希望当用户没有打字或停止输入时,它应该什么都不显示。

我希望在1秒后,它应该验证文本字段是否与之前的长度相同。如果长度相同,屏幕将显示用户已停止写入。如果长度与该秒之前的长度不同,则会一直显示用户正在键入。

1 个答案:

答案 0 :(得分:2)

请注意,您并不想测试按键;你想知道文字是否改变了。例如,用户可能使用鼠标复制并粘贴到文本字段中。因此,您应该使用文本字段的textProperty()注册您的监听器,而不是使用键事件监听器。

您可以这样做:

PauseTransition timer = new PauseTransition(Duration.seconds(1));
textField.textProperty().addListener((obs, oldText, newText) -> 
    timer.playFromStart());
timer.setOnFinished(e -> System.out.println("Text field idle for one second"));