【问题标题】:Automatically generate EventHandler after a specific time without user input in TextField (JavaFX)在特定时间后自动生成 EventHandler 而无需用户在 TextField (JavaFX) 中输入
【发布时间】:2017-06-10 12:35:17
【问题描述】:

当前实施:

目前用户需要按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 将其内容传递给数据库搜索方法

你会如何编写这种代码?

【问题讨论】:

    标签: java textfield eventhandler


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多