栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaFX InvalidationListener或ChangeListener

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaFX InvalidationListener或ChangeListener

您需要为此实现一个

ChangeListener
InvalidationListener
仅当值变为无效时才执行A。请参阅文档。

从Observablevalue的Java文档中:

Observablevalue生成两种类型的事件:更改事件和无效事件。更改事件表示该值已更改。如果当前值不再有效,则会生成一个无效事件。如果Observablevalue支持延迟求值,则这一区别就变得很重要,因为对于延迟求值的值,直到重新计算无效值,才知道该值是否真的发生了变化。
因此,生成更改事件需要进行急切的评估, 而对于急切和懒惰的实现可以生成无效事件。

我添加了一个简单的例子

public static void main(String[] args) {    SimpleIntegerProperty one = new SimpleIntegerProperty(1);    SimpleIntegerProperty two = new SimpleIntegerProperty(0);    // the binding we are interested in    NumberBinding sum = one.add(two);    sum.addListener(observable -> System.out.println("invalidated"));    // if you add a value change listener, the value will NOT be evaluated lazy anymore    //sum.addListener((observable, oldValue, newValue) -> System.out.println("value changed from " + oldValue + " to " + newValue));    // is valid, since nothing changed so far    System.out.println("sum valid: " + sum.isValid());    // will invalidate the sum binding    two.set(1);    one.set(2); // invalidation event NOT fired here!    System.out.println("sum valid: " + sum.isValid());    // will validate the sum binding, since it is calculated lazy when getting the value    System.out.println("sum: " + sum.getValue());    System.out.println("sum valid: " + sum.isValid());}

使用的问题

InvalidationListener
是, 如果该值再次变为无效则不会通知您更改
,因为该值已经无效。您必须为此使用更改侦听器。

在属性上注册更改侦听器 将禁用延迟评估 ,因此,每次触发更改侦听器时都会触发无效事件。

在我添加的示例中尝试一下。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号