我想在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--
答案 0 :(得分:2)
使用extractor
创建列表。
您还没有给出足够的详细信息来提供完整的答案,但如果您的EventShowable
定义了
public class EventShowable {
public IntegerProperty xProperty() { ... }
public StringProperty yProperty() { ... }
// ...
}
然后创建一个列表,在x
或y
更改时触发更新事件
ObservableList<EventShowable> listEvents =
FXCollections.observableArrayList(eventShowable ->
new Observable[] { eventShowable.xProperty(), eventShowable.yProperty() });