Ограничение Javafx CheckBoxtableColumn по rowdata

У меня есть поле checkBoxTableCell в моем табличном представлении, которое заполняется из источника данных, и я хочу отключить флажок для некоторых строк, для которых данные строки имеют некоторые условия.

Например, допустим, мои данные представляют собой список объектов класса Person и if person.exclude=='Y', тогда мне нужно отключить флажок в этой строке.

Я пытаюсь сделать это в col_checkBox.setCellFactory(new Callback .....). Я не могу получить доступ к объекту человека в этой функции. А также я пробовал другие вещи, но безуспешно :(. Любая помощь?

Вот мой код: столбец определяется:

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

person mehmet aslan    schedule 10.03.2015    source источник
comment
Person p = (Person) getTableRow().getItem(); должен предоставить вам доступ к объекту, представленному в строке из подкласса TableCell.   -  person James_D    schedule 10.03.2015
comment
Нет, не работает. он дает ошибку времени компиляции, а getTableRow не найден. (Поскольку getTableRow выдает ошибку времени компиляции, я использовал экземпляр TableCell defCell, чтобы преодолеть ошибку времени компиляции. Но defcell.gettableRow alwsys возвращает null и возникает ошибка времени выполнения. Я добавил свой код в вопрос   -  person mehmet aslan    schedule 11.03.2015


Ответы (1)


Наконец, я нашел решение, проверяющее этот демонстрационный код http://javafx-demos.googlecode.com/svn-history/r63/trunk/javafx-demos/src/main/java/com/ezest/javafx/demogallery/tableviews/TableViewCheckBoxColumnDemo.java

person mehmet aslan    schedule 12.03.2015