目前,我的应用程序会在发生以下事件时显示谁在键入:
textfield.setOnKeyPressed((keyEvent) -> {
if(keyEvent.getCode().isDigitKey() || keyEvent.getCode().isLetterKey() ||
keyEvent.getCode().isModifierKey() || keyEvent.getCode().isWhitespaceKey() ||
keyEvent.isShiftDown()){
whoTypes();
}
但我希望当用户没有打字或停止输入时,它应该什么都不显示。
我希望在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"));