假设我将向 TableView 的 itemsProperty 添加一个 ChangeListener。什么时候调用 ChangeListener 的 changed 方法?
我尝试添加到 TableView 的项目指向的空列表中。结果 - ChangeListener 的 changed 方法没有被调用。
tableView.itemsProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
System.out.println("Changed!");
}
});
final ObservableList data = FXCollections.observableArrayList(new ArrayList());
data.clear();
//data.add(new Object()); don't call this yet
tableView.setItems(data);
data.clear();
data.add(new Object());
tableView.setItems(data);
但是,我也尝试添加到一个空列表,然后让 TableView 的项目指向它。结果 - ChangeListener 的 changed 方法被调用。
tableView.itemsProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
System.out.println("Changed!");
}
});
final ObservableList data = FXCollections.observableArrayList(new ArrayList());
data.clear();
data.add(new Object());
tableView.setItems(data);
data.clear();
data.add(new Object());
tableView.setItems(data);
我在http://docs.oracle.com/javafx/2/api/javafx/scene/control/TableView.html#itemsProperty()上查找了它,但它只说“TableView 的基础数据模型。注意它具有必须与 TableView 本身的类型匹配的泛型类型。”
我问这个是因为我可能会错过其他一些重要的情况。