tableColumn setCellFactory

时间:2017-10-25 08:24:49

标签: javafx tableview javafx-8 javafx-2

我是JavaFX的新手,我在JavaFX中构建了一个tableview,下面是示例代码:

TableView<Person> table = new TableView<>();
table.setEditable(true);
final TableColumn<Person, String>nameCol = new TableColumn<>("Name");
nameCol.setCellValueFactory(new PropertyValueFactory<>("name"));

我在表格中添加一个列表后,一切正常 但是当我在NameCol之后添加这些代码时:

nameCol.setCellFactory(param -> new XCell());

public class XCell extends TableCell<Person, String> {
    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        setStyle(empty ? null : "-fx-font-weight: bold; -fx-alignment: center");
//...
    }
}

然后,来自nameColumn的数据丢失了。 但是当我评论那段代码时:

//nameCol.setCellFactory(param -> new XCell());

所有数据再次回归。 这是有线的,我无法找出问题所在。

如果有人能够解释发生的事情并修复它,我会感激不尽。

1 个答案:

答案 0 :(得分:0)

问题在于@Override TableCell的{​​{1}}方法处理有关单元格中显示内容和方式的内容。如果扩展updateItem,则必须注意在单元格中显示图形或文本。

所以你应该这样做:

TableCell