JavaFX.Как реализовать пользовательский TableCell? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть Water объект, который содержит ссылку на Flat объект, который имеет значения для имени и фамилии (просто String, а не StringProperties).Я хочу создать пользовательский TableCell, который в зависимости от условий напишет либо полное имя (имя + фамилия), либо короткое имя (фамилия + первая буква имени).Это схема моих объектов:

enter image description here

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());
            }
        };
    }
});
...