Java ListChangeListener WasUpdated()不起作用

时间:2015-04-05 21:50:15

标签: java javafx

我想在observableList中修改一个名为EventShowable的对象时触发一些代码。 这是我的代码。

                mainApp.getCalendars().get(i).getListEvents().addListener(new ListChangeListener<EventShowable>() {
                @Override
                public void onChanged(ListChangeListener.Change<? extends EventShowable> c) {
                    while (c.next()) {
                        if (c.wasUpdated()) {
                          //this doesn't work.
                          //perform updated

                        }
                        if (c.wasAdded()){
                            //perform something }

wasAdded()表现不错但不是wasUpdate()。 如何在修改EventShowable时获得有用的东西?感谢

P.S:在JavaDoc中: public boolean wasUpdated() 表示getFrom()(包括)与getTo()独占之间的元素已更改。 这是唯一的可选事件类型,可能不会被所有ObservableLists触发。 https://docs.oracle.com/javase/8/javafx/api/javafx/collections/ListChangeListener.Change.html#wasUpdated--

1 个答案:

答案 0 :(得分:2)

使用extractor创建列表。

您还没有给出足够的详细信息来提供完整的答案,但如果您的EventShowable定义了

等属性
public class EventShowable {
    public IntegerProperty xProperty() { ... }
    public StringProperty yProperty() { ... }
    // ...
}

然后创建一个列表,在xy更改时触发更新事件

ObservableList<EventShowable> listEvents = 
    FXCollections.observableArrayList(eventShowable ->
        new Observable[] { eventShowable.xProperty(), eventShowable.yProperty() });