gpt4 book ai didi

java - 如何监视 ObservableList JavaFX 中包含的对象的变化

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:58 25 4
gpt4 key购买 nike

我真的很难理解 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

有没有办法做到这一点?我正在寻找一种工作流程,以便对对象的修改触发 → 修改列表 → 刷新某个 View 。

谢谢

最佳答案

如果你想监听列表内部对象的变化而不是列表本身,那么你必须将监听器附加到列表的对象而不是列表。

当然要做到这一点,对象必须支持这一点。 java.lang.Object 不支持这个。

而是看看 ObservableValue界面。实现此接口(interface)的对象支持您正在寻找的这种监视。 ObservableValue 的 javadoc 页面列出了所有实现此接口(interface)的 JavaFX 内置类(列表非常长)。

您要么必须使用其中任何一个,要么必须自己实现接口(interface)。并将您的更改监听器添加到对象而不是列表。

关于java - 如何监视 ObservableList JavaFX 中包含的对象的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com