2015-03-10 3 views
0

У меня есть поле 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; 
    }); 
+0

'Person p = (Person) getTableRow(). GetItem();' должен предоставить вам доступ к объекту, представленному в строке из подкласса 'TableCell'. –

+0

Нет, это не работает. он дает ошибку compiletime и getTableRow не найден. (Поскольку getTableRow дает ошибку времени компиляции, я использовал экземпляр экземпляра TableCell defCell для преодоления ошибки времени компиляции. Но defcell.gettableRow alwsys возвращает значение null, а ошибка времени выполнения. Я добавил код в вопрос –

ответ