Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX:如何使包含其他可观察对象列表的可观察对象无效_Java_Javafx_Javafx 8 - Fatal编程技术网

JavaFX:如何使包含其他可观察对象列表的可观察对象无效

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) } 公

我对javaFX中的侦听器有点困惑

我有一个类(我们称之为ObservedContainer)实现了Observable,它包含一些也可观测的对象的列表:

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());