CheckBox默认在TreeTableView中禁用

时间:2017-01-30 20:44:16

标签: java javafx

我不知道为什么复选框中的一列被设置为禁用,尽管是。此页面的代码。

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);

1 个答案:

答案 0 :(得分:0)

您需要删除:

deleteCol.setCellValueFactory(
    new TreeItemPropertyValueFactory<MessageOnTable, Boolean>("delete"));

只需要这一行:

deleteCol.setCellValueFactory(new Callback ....