我不知道为什么复选框中的一列被设置为禁用,尽管是。此页面的代码。
http://o7planning.org/en/11149/javafx-treetableview-tutorial#a3985429
这是我的结果:: https://zapodaj.net/e7ba7de8ec222.png.html他们没有选择的可能性。
TreeTableColumn<MessageOnTable, Boolean> deleteCol
= new TreeTableColumn<MessageOnTable, Boolean>("Delete");
deleteCol.setCellValueFactory(new TreeItemPropertyValueFactory<MessageOnTable, Boolean>("delete"));
deleteCol.setCellValueFactory(new Callback<TreeTableColumn.CellDataFeatures<MessageOnTable, Boolean>, //
ObservableValue<Boolean>>() {
@Override
public ObservableValue<Boolean> call(TreeTableColumn.CellDataFeatures<MessageOnTable, Boolean> param) {
TreeItem<MessageOnTable> treeItem = param.getValue();
MessageOnTable emp = treeItem.getValue();
SimpleBooleanProperty booleanProp= new SimpleBooleanProperty(emp.isDelete());
// Note: singleCol.setOnEditCommit(): Not work for
// CheckBoxTreeTableCell.
// When "Single?" column change.
booleanProp.addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue,
Boolean newValue) {
emp.setDelete(newValue);
}
});
return booleanProp;
}
});
deleteCol.setCellFactory(new Callback<TreeTableColumn<MessageOnTable,Boolean>,TreeTableCell<MessageOnTable,Boolean>>() {
@Override
public TreeTableCell<MessageOnTable,Boolean> call(TreeTableColumn<MessageOnTable,Boolean> p ) {
CheckBoxTreeTableCell<MessageOnTable,Boolean> cell = new CheckBoxTreeTableCell<MessageOnTable,Boolean>();
cell.setAlignment(Pos.CENTER);
return cell;
}
});
treeTableView.getColumns().addAll(senderCol, topicCol, contentsCol, deleteCol);
答案 0 :(得分:0)
您需要删除:
deleteCol.setCellValueFactory(
new TreeItemPropertyValueFactory<MessageOnTable, Boolean>("delete"));
只需要这一行:
deleteCol.setCellValueFactory(new Callback ....