JavaFx:TableView-取消绑定所有属性
我有一个JavaFx:TableView-取消绑定所有属性,java,javafx,Java,Javafx,我有一个TableView,我为它创建的列如下: TableColumn<Foo,String> fieldColumn=new TableColumn("field"); fieldColumn.setCellValueFactory(data->data.getValue().getFieldProperty()); tableView.add(fieldColumn); TableColumn fieldColumn=新的TableColumn(“字段”); field
TableView
,我为它创建的列如下:
TableColumn<Foo,String> fieldColumn=new TableColumn("field");
fieldColumn.setCellValueFactory(data->data.getValue().getFieldProperty());
tableView.add(fieldColumn);
TableColumn fieldColumn=新的TableColumn(“字段”);
fieldColumn.setCellValueFactory(数据->数据.getValue().getFieldProperty());
tableView.add(字段列);
现在我想销毁我的
tableView
,但我想继续使用所有foos
。这就是为什么我想从表/列中取消绑定foos
”属性。如何操作?如果删除TableColumn
s,侦听器将在下一次布局过程中删除。这允许您通过清除列并调用layout()
,删除由TableView
添加的侦听器:
Item
类,用于获取属性的侦听器数量
public class Item {
private final Set<Object> listeners = new HashSet<>();
public Item(String value) {
this.value.set(value);
}
private final StringProperty value = new SimpleStringProperty() {
@Override
public void removeListener(ChangeListener<? super String> listener) {
super.removeListener(listener);
listeners.remove(listener);
}
@Override
public void addListener(ChangeListener<? super String> listener) {
super.addListener(listener);
listeners.add(listener);
}
@Override
public void removeListener(InvalidationListener listener) {
super.removeListener(listener);
listeners.remove(listener);
}
@Override
public void addListener(InvalidationListener listener) {
super.addListener(listener);
listeners.add(listener);
}
};
public final StringProperty valueProperty() {
return this.value;
}
public int getListenerCount() {
return listeners.size();
}
}
按打印侦听器计数
,然后按清除列
按钮将产生以下输出:
listeners: 3
after clear columns: 0
listeners: 3
after clear columns: 0