JavaFX TreeTableView 列 setOnEditCommit() 拒绝接受处理程序以保存已编辑的单元格

标签 java javafx javafx-8 treetableview

在我的一个项目中,我使用 JavaFX 中的 TreeTableView 来显示一些 BillingTableRow 类型的对象。我已经实现了一个单元格编辑器,但是当我尝试设置 onEditCommit 事件时,我无法使内容类型匹配。

这是我在 BillingTableRow 类型的对象内存储 String 类型名称的列之一的代码:

    // Name column
    Callback<TreeTableColumn<BillingTableRow, String>, TreeTableCell<BillingTableRow, String>> nameCallback = new Callback<TreeTableColumn<BillingTableRow, String>, TreeTableCell<BillingTableRow, String>>() {
        @Override
        public TreeTableCell<BillingTableRow, String> call(TreeTableColumn<BillingTableRow, String> p) {
            return new TextFieldTreeTableCell<BillingTableRow, String>();
        }
    };
    nameColumn.setCellFactory(nameCallback);
    nameColumn.setOnEditCommit(new EventHandler<CellEditEvent<BillingTableRow, String>>() {
        @Override
        public void handle(CellEditEvent<BillingTableRow, String> t) {
            ((BillingTableRow) t.getTableView().getItems().get(t.getTablePosition().getRow())).setName(t.getNewValue());
        }
    });

有人可以告诉我出了什么问题吗?我在 Eclipse 中收到以下错误:

The method setOnEditCommit(EventHandler< TreeTableColumn.CellEditEvent>) in the type TreeTableColumn is not applicable for the arguments (new EventHandler< TableColumn.CellEditEvent< BillingTableRow,String>>(){})

感谢您对我的问题提供的任何帮助。

最佳答案

那是因为你有一个导入

import javafx.scene.control.TableColumn.CellEditEvent;

所以当你定义时

EventHandler<CellEditEvent<BillingTableRow, String>>

编译器将此 CellEditEvent 获取为 TableColumn.CellEditEvent 而不是 TreeTableColumn.CellEditEvent,并给出错误。

要修复它,请删除该导入并明确写入

EventHandler<TreeTableColumn.CellEditEvent<BillingTableRow, String>>

关于JavaFX TreeTableView 列 setOnEditCommit() 拒绝接受处理程序以保存已编辑的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453531/

相关文章:

java - 从固定大小的数组中删除 `int`

Java 复杂数组

java - 将变量的名称打印为字符串,或将变量链接到字符串变量为 'printed'

java - TableView getSelectedIndex 返回异常值

Javafx- 鼠标单击事件可撤消上一次鼠标单击所做的操作

java - 类是否扩展了另一个的注释?

java - ImageView 找不到图片网址

java - 将 HTML/CSS 集成到 JavaFX 的 FXML 和 CSS 中

mercurial - JFX8 repo 的克隆无法完成

java - 仅对 JavaFx 中 TextArea 的第一行应用空格/填充