[英]JavaFX TreeTableView custom TreeCell with controls
我是JavaFX 8的新手,并尝试在第二列和第三列中使用一些jfxtras控件实现TreeTableView。 因此,我使用自定义TreeCells设置了这些列的单元格工厂,例如:
col3.setCellFactory(new Callback<TreeTableColumn<Object, String>, TreeTableCell<Object, String>>() {
@Override
public TreeTableCell<Object, String> call(TreeTableColumn<Object, String> param) {
TreeTableCell<Object, String> cell = new TreeTableCell<Object, String>() {
private ColorPicker colorPicker = new ColorPicker();
@Override
protected void updateItem(String t, boolean bln) {
super.updateItem(t, bln);
setGraphic(colorPicker);
}
};
return cell;
}
});
现在,我可以看到ColorPickers并可以使用它们了,但是该列对扩展或折叠第1列的节点(从POJO中显示String信息)不起作用。 因此,例如,如果我折叠整棵树,第三列仍显示所有ColorPickers。
那么,使列“同步”还需要什么呢?
谢谢!!
当单元格显示的项目更改时,将调用updateItem(...)
方法。 如果单元格为空(例如,因为用户折叠了上面的单元格),则第二个参数为true
; 您需要检查并取消设置图形。
所以:
col3.setCellFactory(new Callback<TreeTableColumn<Object, String>, TreeTableCell<Object, String>>() {
@Override
public TreeTableCell<Object, String> call(TreeTableColumn<Object, String> param) {
TreeTableCell<Object, String> cell = new TreeTableCell<Object, String>() {
private ColorPicker colorPicker = new ColorPicker();
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
} else {
setGraphic(colorPicker);
}
}
};
return cell;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.