我是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());
所有数据再次回归。
这是有线的,我无法找出问题所在。
如果有人能够解释发生的事情并修复它,我会感激不尽。
答案 0 :(得分:0)
问题在于@Override
TableCell
的{{1}}方法处理有关单元格中显示内容和方式的内容。如果扩展updateItem
,则必须注意在单元格中显示图形或文本。
所以你应该这样做:
TableCell