我有一个扩展
Button
的类,其中 String
的构造如下,
text = button.getText();
但是,我需要在文本发生变化时更新文本,即侦听器。 Button 是否有像 onEdit 这样的方法,可以确保按钮的文本始终与变量文本相同?
使用按钮的文本属性注册监听器:
button.textProperty().addListener((obs, oldText, newText) -> {
// do whatever you need with newText
});
你在说什么构造函数?您派生的 Button 的构造函数?
另一个问题是,您的文本变量或字段驻留在哪里?如果它在派生的 Button 类中,则不需要它,因为您始终可以访问原始文本属性,并且您的文本将始终反映与 Button 的文本属性相同的内容 - 即使来自外部世界。
如果您出于某种原因想要处理更改的文本,您应该使用更改侦听器来触发处理,将新值传递给消费者方法,而不是将其冗余存储在您的类中。 所以
// 用 newText 做任何你需要的事情
建议的解决方案可能看起来像这样
doIncredibleThings( newText );
如果有必要,您甚至可以触发一些异步操作,以免阻塞事件分派线程太久。