У меня есть Water
объект, который содержит ссылку на Flat
объект, который имеет значения для имени и фамилии (просто String
, а не StringProperties
).Я хочу создать пользовательский TableCell
, который в зависимости от условий напишет либо полное имя (имя + фамилия), либо короткое имя (фамилия + первая буква имени).Это схема моих объектов:
TableView
заполняется данными из Water
объекта:
@FXML
private TableView<Water> waterTable;
@FXML
private TableColumn<Water, String> ownerColumn;
Я пытался сделать пользовательский TableCell, но я не знаю, как я могу получить доступ к данным из объекта Water.
ownerColumn.setCellFactory(new Callback<TableColumn<Water,String>, TableCell<Water,String>>() {
@Override
public TableCell<Water, String> call(TableColumn<Water, String> param) {
return new TableCell<Water, String>(){
@Override
protected void updateItem(String item, boolean empty){
setText("Need to set a text to Water.getFlat().getName()+' '+Water.getFlat().getLastName()");
}
};
}
});
Как изменить строку setText
, чтобы она получала информацию от объекта Water
что будет назначено для этой строки?
ОБНОВЛЕННЫЙ КОД:
@FXML
private TableView<Water> waterTable;
@FXML
private TableColumn<Water, Flat> ownerColumn;
// and setCellFactory
ownerColumn.setCellFactory(new Callback<TableColumn<Water,Flat>, TableCell<Water,Flat>>() {
@Override
public TableCell<Water, Flat> call(TableColumn<Water, Flat> param) {
return new TableCell<Water, Flat>(){
@Override
protected void updateItem(Flat item, boolean empty){
setText(item.getOwnerName()+" "+item.getOwnerLastName());
}
};
}
});