java - javafx ListChangeListener.Change 抽象方法实现
问题描述
接口中的 Change 类中的方法next、getFrom、getTo、getRemovedjavafx.collections.ListChangeListener
...被声明为抽象的。以下摘录来自界面。
public interface ListChangeListener<E> {
public abstract static class Change<E>{
public abstract boolean next();
public abstract void reset();
public void Change(ObservableList<E> list){
this.list = list;
}
public abstract int getFrom();
//... some more methods
}
public void onChanged(Change<? extends E> c);
}
如果我有一堂课来观察可观察列表的变化
import javafx.beans.Observable;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.util.Callback;
// A class to detect changes in an observable list
public class ChangeQuery {
static IntegerProperty E1;
static IntegerProperty E2;
public static void main(String[] args) {
Callback<IntegerProperty, Observable[]> extractor = (IntegerProperty p) -> {
System.out.println("Extracted :" + p);
return new Observable[] {p};
};
ObservableList<IntegerProperty> list = FXCollections.observableArrayList(extractor);
list.addListener(ChangeQuery::onChanged);
E1 = new SimpleIntegerProperty(11);
E2 = new SimpleIntegerProperty(22);
list.add(E1);
list.add(E2);
E1.set(111);
}
public static void onChanged(ListChangeListener.Change<? extends IntegerProperty> change) {
System.out.println("GetList: " + change.getList());
while (change.next()) {
System.out.println(
"index [" + change.getFrom() + "] to " + "[" + change.getTo() + "]" ); // change.getFrom() implementation
if (change.wasPermutated()) {
System.out.println("Permutated is true");
} else if (change.wasUpdated()) {
System.out.println("Update == true");
} else if (change.wasReplaced()) {
System.out.println("removed and added == true");
} else if (change.wasRemoved()){
System.out.println("removed");
} else if (change.wasAdded()) {
System.out.println("Added");
}
}
}
}
例如,change.getFrom()
方法是如何实现的。我检查了 javafx.collection 包,但没有发现这样的实现,或者我错过了一些东西。在此先感谢您的帮助。
解决方案
推荐阅读
- c# - 从 DataContext 中删除一个项目并在没有 SaveChanges() 的情况下显示更新的值
- chef-infra - 在 Ubuntu 18.04 上通过 chef-solo 安装 apache2 失败
- selenium - 如何通过 Facebook/php-webdriver 添加选项?
- oracle-sqldeveloper - Oracle SQL - 从 CSV(Excel 格式)导入日期
- ios - 根据元数据更改 AVPlayerViewController 的显示文本
- typescript - 扩展运算符是否在操作后返回新对象?
- javascript - 复制图像 URL 并粘贴到单独页面的表单中
- ssl - Openssl:具有透明握手的代理
- python - 如何更改 seaborn 散点图中的点边缘颜色
- python - h5py写一个hdf文件,关于维度的问题