【问题标题】:Value Change Listener for JavaFX's TextFieldJavaFX 的 TextField 的值更改侦听器
【发布时间】:2015-07-21 13:23:13
【问题描述】:

我想在我的JavaFX's TextField 中添加一种listener,当用户更改TextField 的值时,应用程序会在控制台上打印一些内容。

我已经搜索过,我发现了以下非常相似的问题:Value Change Listener to JTextField

上述问题的答案非常清晰有效,但不幸的是它只对JTextField(不是JavaFX's TextField)有用,因为它说你应该像这样使用DocumentListener:

// Listen for changes in the text
textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    warn();
  }
  public void removeUpdate(DocumentEvent e) {
    warn();
  }
  public void insertUpdate(DocumentEvent e) {
    warn();
  }

但在 JavaFX 的 TextFields 中你无法做到这一点。 所以?解决办法是什么?

(用代码描述可能非常好,但如果不可能,任何提示将不胜感激)

【问题讨论】:

    标签: java javafx javafx-8 documentlistener


    【解决方案1】:

    为 TextField 的 textProperty 添加一个监听器:

    TextField textField = new TextField();
    textField.textProperty().addListener((observable, oldValue, newValue) -> {
        System.out.println("textfield changed from " + oldValue + " to " + newValue);
    });
    

    【讨论】:

    • 这实际上使文本字段失去焦点,这对用户来说是相当令人沮丧的。
    • 对于那些使用 Kotlin 的人来说,上面的 sn-p 看起来是这样的:val textField = TextField()textField.textProperty().addListener { observable, oldValue, newValue -> println("textfield changed from $oldValue to $newValue") }
    • 在 new Thread(() -> {Platform.runLater(() -> { 中设置焦点。这可能是一个错误。
    猜你喜欢
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2011-04-26
    • 2019-06-04
    • 2019-04-21
    相关资源
    最近更新 更多