了JavaFx。如何实现自定义TableCell?

时间:2018-05-30 13:35:58

标签: javafx tableview cell tablecell

我有一个Water对象,其中包含对Flat对象的引用,该对象具有名称和姓氏的值(仅String,而不是StringProperties)。我想创建一个自定义TableCell,根据条件将写出全名(姓名+姓氏)或短名称(姓氏+名字的第一个字母)。这是我的对象的架构:

enter image description here

TableView由来自Water object:

的数据填充
@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());
            }
        };
    }
});

0 个答案:

没有答案