簡體   English   中英

JavaFX 的 TextField 的值更改偵聽器

[英]Value Change Listener for JavaFX's TextField

我想在我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 中,您無法做到這一點。 所以? 解決辦法是什么?

(用代碼描述可能非常好,但如果不可能,任何提示將不勝感激)

為 TextField 的 textProperty 添加一個監聽器:

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

您可以將 KEY_TYPED 的 EventFilter 添加到您的文本字段

public class YourClass extends BorderPane implements EventHandler<KeyEvent>
    TextField rootFolder ;

    public YourClass(ReportOptions rep) {
        rootFolder = new TextField("example/path");
        rootFolder.addEventFilter(KeyEvent.KEY_TYPED,this);
    }

    @Override
    public void handle(KeyEvent event) {
        //use or write to console :
        String txt = ((TextField) event.getSource()).getText();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM