JavaFX FXML - 按钮是否有类似 OnEdit 的方法?

问题描述 投票:0回答:2

我有一个扩展

Button
的类,其中
String
的构造如下,

text = button.getText();

但是,我需要在文本发生变化时更新文本,即侦听器。 Button 是否有像 onEdit 这样的方法,可以确保按钮的文本始终与变量文本相同?

javafx fxml
2个回答
1
投票

使用按钮的文本属性注册监听器:

button.textProperty().addListener((obs, oldText, newText) -> {
    // do whatever you need with newText
});

0
投票

你在说什么构造函数?您派生的 Button 的构造函数?

另一个问题是,您的文本变量或字段驻留在哪里?如果它在派生的 Button 类中,则不需要它,因为您始终可以访问原始文本属性,并且您的文本将始终反映与 Button 的文本属性相同的内容 - 即使来自外部世界。

如果您出于某种原因想要处理更改的文本,您应该使用更改侦听器来触发处理,将新值传递给消费者方法,而不是将其冗余存储在您的类中。 所以

// 用 newText 做任何你需要的事情

建议的解决方案可能看起来像这样

doIncredibleThings( newText );

如果有必要,您甚至可以触发一些异步操作,以免阻塞事件分派线程太久。

© www.soinside.com 2019 - 2024. All rights reserved.