У меня есть поле checkBoxTableCell в моем представлении таблицы и заполнено из источника данных, и я хочу отключить флажок для некоторых строк, для которых данные строк имеют некоторые условия.Javafx CheckBoxtableColumn ограничение by rowdata
Например, можно сказать, что мои данные представляют собой список объектов класса 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;
});
'Person p = (Person) getTableRow(). GetItem();' должен предоставить вам доступ к объекту, представленному в строке из подкласса 'TableCell'. –
Нет, это не работает. он дает ошибку compiletime и getTableRow не найден. (Поскольку getTableRow дает ошибку времени компиляции, я использовал экземпляр экземпляра TableCell defCell для преодоления ошибки времени компиляции. Но defcell.gettableRow alwsys возвращает значение null, а ошибка времени выполнения. Я добавил код в вопрос –