Iva*_*son 2 javafx arraylist changelistener
嗨,我有一个可能很愚蠢的问题。我刚刚开始玩弄
Properties和ChangeListeners 但遇到了减速带。我明白,如果我制作一个ObjectProperty包含ArrayListany 的对象ChangeListener,则只有在其本身发生变化时才会触发ArrayList。不过我希望所有的ChangeListeners 都能开火,如果
ArrayList本身发生变化。ArrayList(即添加或删除元素)。ArrayList更改为另一个元素。ArrayList,即元素的内容发生更改(Person例如,如果该元素是自定义类。例如,如果该人更改了她的年龄,我想触发该元素ChangeListener。)。JavaFX 中是否已经有一些功能可以实现此目的,或者我应该手动实现此功能?最好的方法是什么?
/谢谢你的帮助!
您无法将侦听器添加到常规中,ArrayList因为它是不可观察的。然而,该FXCollections包确实提供了一个ObservableArrayList<E>允许您监听更改的方法。
这是一个演示程序:
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
public class Main {
public static void main(String[] args) {
ObservableList<String> strings = FXCollections.observableArrayList();
strings.addAll("One", "Two", "Three");
strings.addListener((ListChangeListener<String>) change -> {
while (change.next()) {
if (change.wasAdded()) {
System.out.println(change.getAddedSubList().get(0)
+ " was added to the list!");
} else if (change.wasRemoved()) {
System.out.println(change.getRemoved().get(0)
+ " was removed from the list!");
}
}
});
strings.add("Dogs");
strings.remove("Two");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用更多方法来ListChangeListener获取有关更改内容的更多详细信息。仔细阅读一下吧!
| 归档时间: |
|
| 查看次数: |
3453 次 |
| 最近记录: |