javafx - 监听 ObservableList 的单个元素的删除
问题描述
我有一个ObservableList<T>
类,我想向列表的单个元素添加一个侦听器,当从列表中删除该元素时应该调用该侦听器。当然,我可以在整个列表中添加一个更改侦听器,以检查删除的项目是否正确,但是是否有更惯用的解决方案,例如将元素包装在 Observable (so ObservableList<Observable<T>>
) 中并将 InvalidationListener 添加到那个 Observable 什么的?谢谢你的帮助!
编辑:我正在寻找一种将侦听器添加到仅在删除特定元素时触发的 ObservableList 的方法。据我所知,fx 本身并不提供该功能。
解决方案
我使用 JavaFX Bindings 库找到了一个简短的解决方案:
BooleanBinding isContained = Bindings.isNotEmpty(list.filtered(element -> {
return element == elementOfInterest;
}));
isContained.addListener ((obs, oldval, newval) -> {
// do stuff
});
这给你一个确切的时间Observable<Boolean> isContained
是true
什么时候elementOfInterest
包含在list
和false
其他地方。倾听它的变化提供了解决方案。
推荐阅读
- r - sparklyr date_format 仅适用于某些格式
- python-3.x - DLIB相关跟踪器边界框跟随对象问题
- docker - 我可以在 docker 容器中使用降级的 cuda 版本吗?
- laravel - Laravel如何在商店控制器中保存归属?
- ruby-on-rails - 在 ActiveModel::EachValidator 中使用实例变量
- angular - 从外部访问角度组件中的 CSS
- sql - Linux 上的 MSSQL,即席查询:“没有事务处于活动状态。”
- regex - url 路径的正则表达式
- javascript - 两个不同元素的同步悬停
- java - 执行 Runner 类时找不到多个 Cucumber 标签