将 JFXButton 添加到 JFXTreeTableView 中

Adding JFXButton into a JFXTreeTableView

我曾尝试对此进行研究,但找不到任何示例。我发现的示例仅与普通 TableView 相关。我只能创建一个带有对象的 JFXTreeTableView 并列出字符串。任何帮助,将不胜感激!谢谢!

我需要将按钮或除字符串之外的任何其他对象放入 TreeTableView。

已更新以明确我希望它看起来像什么,解决方案如下。

参考这个 post,我试图将一个按钮(特别是 JFXButton)添加到一个 TreeTableView(特别是 JFXTreeTableView)中

不过,post只谈了TableView。分析代码后,我尝试修改代码以改为使用 TreeTableView 和 TreeTableCell。

使用 JFoenix 中的示例代码并按照下面的代码片段对其进行修改,我可以将 JFXButton 加载到 JFXTreeTableView 中。 (也适用于普通 Button。只需将 JFXButton 替换为 Button)

JFXTreeTableColumn<User, String> settingsColumn = new JFXTreeTableColumn<>("Others");
        settingsColumn.setPrefWidth(100);
        Callback<TreeTableColumn<User, String>, TreeTableCell<User, String>> cellFactory
                = //
                new Callback<TreeTableColumn<User, String>, TreeTableCell<User, String>>() {
                    @Override
                    public TreeTableCell call(final TreeTableColumn<User, String> param) {
                        final TreeTableCell<User, String> cell = new TreeTableCell<User, String>() {

                            final JFXButton btn = new JFXButton("Just Do it");

                            @Override
                            public void updateItem(String item, boolean empty) {
                                super.updateItem(item, empty);
                                if (empty) {
                                    setGraphic(null);
                                    setText(null);
                                } else {
                                    btn.setButtonType(JFXButton.ButtonType.RAISED);
                                    btn.setOnAction(event -> {
                                    //Button Action here
                                    });
                                    setGraphic(btn);
                                    setText(null);
                                }
                            }
                        };
                        return cell;
                    }
                };

settingsColumn.setCellFactory(cellFactory);

//Also remember to add the new column in
treeView.getColumns().setAll(deptColumn, ageColumn, empColumn, settingsColumn);

这是最终结果: