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 自体の型と一致する必要があるジェネリック型があります。」
他の重要な状況を見逃す可能性があるため、これを求めています。