2014-10-20 1 views
0

Я работаю с JavaFX TreeTableView, содержащим элементы типа BillingTableRow. Я хочу, чтобы столбцы были стилизованы на основе значения, полученного методом getType() в BillingTableRow, но я не могу получить доступ к нему изнутри обратного вызова, который я пытаюсь настроить. Вот мой код:Получить переменную изнутри JavaFX TreeTable CellFactory Обратный вызов

Callback<TreeTableColumn<BillingTableRow, Double>, TreeTableCell<BillingTableRow, Double>> eveningCallback = new Callback<TreeTableColumn<BillingTableRow, Double>, TreeTableCell<BillingTableRow, Double>>() { 
     @Override 
     public TreeTableCell<BillingTableRow, Double> call(TreeTableColumn<BillingTableRow, Double> p) { 
      return new EditableTreeTableDoubleCell() { 
       @Override 
       public void updateItem(Double item, boolean empty) { 
        super.updateItem(item, empty); 

        BillingTableRow row = (...)// Get attached BillingTableRow for current tree table row. 
        if (row.getType() == 0) { 
         setText(null); 
        } 

       } 
      }; 
     } 
    }; 
    eveningColumn.setCellFactory(eveningCallback); 

Что мне следует заменить (...), чтобы заставить его работать?

ответ

1

Использование

BillingTableRow row = getTreeTableRow().getItem();

Оба TableCell и TreeTableCell определяют tableRow свойство, которое дает ячейку, отображающее всю строку, к которой принадлежит текущая ячейка. Для TreeTableCell<S,T>, getTreeTableRow() вернет TreeTableRow<S>, который является подклассом Cell<S>. Это означает, что у него есть метод getItem(), возвращаемым типом которого является S, то есть элемент, представляющий данные для всей строки.