2016-09-21 4 views
0

мне нужно, чтобы показать на TableView столбец, вложенная боб, как это:JavaFX TableColumn с вложенным Bean

public class A_Bean { 
    private ObjectProperty<BigDecimal> id; 
    private B_Bean qwerty; 
} 


public class B_Bean { 
    private ObjectProperty<BigDecimal> id; 
    private StringProperty qwerty_B; 
} 

Все класс боба имеет получение, установку и метод свойства. Моя проблема заключается в том, чтоимеет переменную типа B_Bean, и я не знаю, как сообщить tableColumn, что он должен отображать поле qwerty_BB_Bean, а не указатель на переменную qwertyA_Bean.

@FXML 
private TableView<A_Bean> myTable; 
@FXML 
private TableColumn<A_Bean, BigDecimal> idColumn; 
@FXML 
private TableColumn<A_Bean, B_Bean> qwertyColumn; 

..... 

@FXML 
private void initialize() { 
idColumn.setCellValueFactory(cellData -> cellData.getValue().idProperty()); 
qwertyColumn.setCellValueFactory(cellData -> cellData.getValue().qwertyProperty()); 
..... 
} 

public void setMainApp(MainApp mainApp) { 
    this.mainApp = mainApp; 
    myTable.setItems(mainApp.getA_BeanData()); 
} 

Если при запуске моего кода я буду видеть на tableColumn что-то вроде [email protected]

мне нужно сказать к tableColumn, что он должен принести qwerty_B поля из A_Bean. Как я могу это сделать?

+0

я бы ожидал увидеть 'xx.B_Bean @ hashcode', а не' xx.A_Bean @ hashcode' ... вы уверены, что это то, что вы видите? –

+0

Да, я сделал опечатку, это 'xx.B_Bean @ 1234dasf23'. Любое предложение для решения проблемы? –

ответ

0

Просто используйте мобильный завод сказать ячейку, как отобразить B_Bean он содержит в качестве значения:

qwertyColumn.setCellFactory(tc -> new TableCell<A_Bean, B_Bean>() { 
    @Override 
    protected void updateItem(B_Bean item, boolean empty) { 
     super.updateItem(item, empty); 
     setText(empty ? null : item.getQwerty_B()); 
    } 
}); 
+0

Отлично! Не забудьте импортировать 'javafx.scene.control.TableCell'. Благодаря! –

Смежные вопросы