JavaFX 8 - 向TreeTable单元添加组件

时间:2014-07-21 20:36:10

标签: java javafx-2 javafx-8

所以我有这个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,所以我认为这可能会解决我的问题。任何想法为什么没有通过有效的应用程序?

1 个答案:

答案 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