[英]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.