由rowdata进行的Javafx CheckBoxtableColumn限制

时间:2015-03-10 14:03:50

标签: javafx tablecolumn

我的tableview中有一个checkBoxTableCell字段,并且是从数据源填充的,我想禁用某些行的复选框,行数据显示某些条件。

例如,假设我的数据是Person类对象列表和 if person.exclude=='Y'然后我必须禁用该行中的复选框。

我试图在col_checkBox.setCellFactory(new Callback .....)中尝试在此函数中访问person对象。而且我尝试了其他一些但没有成功的事情:(。有什么帮助吗?

这是我的代码: 列由以下内容定义:

@FXML
private TableColumn<FVariable, Boolean> col_exclude;

我用;

填充表格
    ObservableList<FVariable> nt = FXCollections.observableArrayList(gd.getInputAtrributes());
    tbl_Attributes.setItems(nt);

然后;

    col_exclude.setCellValueFactory(new PropertyValueFactory<>("excluded"));
    //     col_exclude.setCellFactory(CheckBoxTableCell.forTableColumn(col_exclude));

   final Callback<TableColumn<FVariable, Boolean>,TableCell<FVariable, Boolean>> AllowCellFactory=CheckBoxTableCell.forTableColumn(col_exclude);
    col_exclude.setCellFactory((TableColumn<FVariable, Boolean> param) -> {
        TableCell<FVariable, Boolean> defCell= AllowCellFactory.call(param);


        FVariable p=(FVariable) defCell.getTableRow().getItem();

         if (p.getdType()!='S')
            defCell.disableProperty().set(false);
        else
            defCell.disableProperty().set(true);
        return defCell;
    });