所以我有这个TreeTableView,我可以正确显示文本,但不想显示按钮和图像。我目前正在使用覆盖TreeTableCell类及其更新方法的方法。
TreeTableColumn<Application, Application> installed = new TreeTableColumn<Application, Application>("Installed?");
installed.setResizable(false);
installed.setPrefWidth(308.9);
installed.setCellFactory(new Callback<TreeTableColumn<Application, Application>, TreeTableCell<Application, Application>>()
{
@Override
public TreeTableCell<Application, Application> call(TreeTableColumn<Application, Application> param)
{
TreeTableCell<Application, Application> cell = new TreeTableCell<Application, Application>()
{
@Override
public void updateItem(Application app, boolean empty)
{
if(app != null)
{
setGraphic(app.getInstalledImage());
}
}
};
return cell;
}
});
appTree.getColumns().add(installed);
但是,“app”在不检查app!= null时会抛出NullPointerException,所以我认为这可能会解决我的问题。任何想法为什么没有通过有效的应用程序?
答案 0 :(得分:1)
TreeTableView
包含空单元格;最后一个填充行下方空间中的单元格,也可能是某些列中用于折叠行的单元格。空单元格始终使用updateItem(...)
项目调用null
。
请注意,在您的实施中调用super.updateItem(...)
始终是必不可少的:
@Override
public void updateItem(Application app, boolean empty)
{
super.updateItem(app, empty);
if(app != null)
{
setGraphic(app.getInstalledImage());
}
}
有关详细信息,请参阅Javadocs for Cell
。