JavaFX:如何使包含其他可观察对象列表的可观察对象无效
我对javaFX中的侦听器有点困惑 我有一个类(我们称之为ObservedContainer)实现了Observable,它包含一些也可观测的对象的列表:JavaFX:如何使包含其他可观察对象列表的可观察对象无效,java,javafx,javafx-8,Java,Javafx,Javafx 8,我对javaFX中的侦听器有点困惑 我有一个类(我们称之为ObservedContainer)实现了Observable,它包含一些也可观测的对象的列表: public class ObservedContainer implements Observable { ArrayList<AnotherObservableClass> someOtherClasses; (...observable implementation omitted for brevity) } 公
public class ObservedContainer implements Observable {
ArrayList<AnotherObservableClass> someOtherClasses;
(...observable implementation omitted for brevity)
}
公共类ObservedContainer实现了Observable{
ArrayList其他类;
(…为简洁起见省略了可观察的实现)
}
当我从数组中添加或删除某些内容时,我可以使该类无效-没关系:
public class ObservedContainer implements Observable {
ArrayList<AnotherObservableClass> someOtherClasses = new ArrayList<>();
(...observable implementation omitted for brevity)
public void addAnotherObservableClass(AnotherObservableClass a){
someOtherClasses.add(a);
fireInvalidationEvent();
// This just notifies all listeners that the object has changed
}
public void removeAnotherObservableClass(AnotherObservableClass a){
someOtherClasses.remove(a);
fireInvalidationEvent();
}
}
公共类ObservedContainer实现了Observable{
ArrayList SomeotherClass=新的ArrayList();
(…为简洁起见省略了可观察的实现)
公共无效添加另一个可观察类别(另一个可观察类别a){
其他类别。添加(a);
FireInvalizationEvent();
//这只是通知所有侦听器对象已更改
}
public void removeanotherobservable类(另一个可观察类a){
删除(a);
FireInvalizationEvent();
}
}
但是,当数组中的对象被修改时,如何让它触发失效事件呢?ObservedContainer
对象是否应该作为每个另一个observedclass
对象的侦听器订阅,并对此作出反应
谢谢大家! 有一个类应该为您处理这个问题: 可用于在修改列表中元素的属性时触发更新更改 例子
也许我做错了什么,但当我修改底层对象的属性时,这似乎不起作用?当列表中任何对象的任何属性被修改时,我希望列表无效。
ObservableList<Node> list = FXCollections.observableArrayList(node -> new Observable[] { node.translateXProperty() });
list.addListener((Observable o) -> fireInvalidationEvent());