在TextField(JavaFX)中没有用户输入的特定时间后自动生成EventHandler

时间:2017-06-10 12:35:18

标签: java textfield eventhandler

当前实施:

目前,用户需要按 Enter键来生成一个EventHandler,以使我的应用程序对TextField中的输入字符串执行某些操作。

 textFieldSearchProductNumber.setOnKeyPressed((KeyEvent keyEvent) -> {
            if (keyEvent.getCode() == KeyCode.ENTER) {
                if (textFieldSearchProductNumber.getText().isEmpty()) {
                    // ... database query: string content of textFieldSearchProductNumber
                } 
        });

目标:

我想让TextField在用户停止输入后立即生成一个EventHandler(可能是在计时器或任何其他推荐的帮助下)

  • 观察到对文本字段的进一步输入 - >计时器重置为500毫秒,文本字段再次等待输入
  • 没有进一步输入到计时器已经过去的文本字段 - > textfield将其内容传递给数据库搜索方法

你会怎么写这种代码?

1 个答案:

答案 0 :(得分:0)

我找到了jewelsea提供的代码段,这对我的简单应用程序(LINK)非常有用。 他还提到了将ReactFX用于更复杂的解决方案(LINK

PauseTransition pause = new PauseTransition(Duration.seconds(1));
textField.textProperty().addListener(
    (observable, oldValue, newValue) -> {
        pause.setOnFinished(event -> doSomething(newValue));
        pause.playFromStart();
    }
);