Bla*_*dor 11 java javafx list java-8
我真的很难理解ObservableList对象在JavaFX中是如何工作的.我想监视其中的对象List是否已被修改.到目前为止,我只看到我可以监视List作为一个实体本身是否已被修改...但不是以下对象List:
ObservableList<Stuff> myList = FXCollections.<Stuff>observableArrayList();
myList.add(someStuff);
myList.addListener((ListChangeListener.Change<? extends Stuff> change) -> {
while(change.next()){
if(change.wasUpdated()){
System.out.println("Update detected");
}
else if(change.wasPermutated()){
}
else{
for (Stuff remitem : change.getRemoved()) {
//do things
}
for (Stuff additem : change.getAddedSubList()) {
//do things
}
}
}
});
someStuff.setThing("clobber"); // trigger listener
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?我正在寻找一个工作流程,以便对对象的修改触发→修改列表→刷新某个视图.
谢谢
如果要监视列表内部对象的更改,而不是列表本身,则必须将侦听器附加到列表对象而不是列表。
当然要能够做到这一点,对象必须支持这一点。java.lang.Object不支持这一点。
而是看一下ObservableValue界面。实现此接口的对象支持您正在寻找的这种监视。的javadoc页面ObservableValue列出了实现此接口的所有JavaFX内置类(列表非常简单)。
您要么必须使用其中任何一个,要么必须自己实现接口。并将您的更改侦听器添加到对象,而不是列表。