gpt4 book ai didi

java - 如何在 JavaFX 中触发 Textfield 监听器?

转载 作者:行者123 更新时间:2023-12-02 04:21:41 25 4
gpt4 key购买 nike

在 Java 中,我正在尝试触发 Textfield 监听器。

我发现的唯一解决方案是将 setText 与空格一起使用:

txt.setText(" "); 

正确的做法是什么?

详细信息:

TextField txt = new TextField();
txt.setPromptText("Search");
txt.textProperty().addListener(new ChangeListener() {
public void changed(ObservableValue observable, Object oldVal,Object newVal) {
//...to do
}
};
txt.setText(" "); //Firing the listener

最佳答案

调用存储的监听器引用

您可以记录对监听器的引用并在需要时调用它,例如:

TextField txt = new TextField();
txt.setPromptText("Search");

ChangeListener<String> txtListener =
(observable, oldValue, newValue) ->
System.out.println(
"Search text updated to: " + newValue
);

txt.textProperty().addListener(
txtListener
);

txtListener.changed(
txt.textProperty(),
null,
"frobozz"
);

这将输出“搜索文本更新为:frobozz”。我不太喜欢的是它没有太多语义,而且文本也没有真正改变。

替代方法

另一种方法是拥有一个与您的应用程序相关的命名函数,并在您需要在监听器内部或外部时调用该函数。我更喜欢这种替代方法。

txt.textProperty().addListener(
(observable, oldValue, newValue) -> search(newValue)
);
search(null);

. . .

private void search(String searchText) {
System.out.println(
"Search result for: " + searchText
);
}

这将输出:“搜索结果:null”。

注意:这个答案使用了 Java 8 code .

关于java - 如何在 JavaFX 中触发 Textfield 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com