在我的一个项目中,我正在使用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中收到以下错误:


TreeTableColumn类型的方法setOnEditCommit(EventHandler )不适用于参数(新的EventHandler >(){})


感谢您为我的问题提供的帮助。

最佳答案

那是因为你有进口

import javafx.scene.control.TableColumn.CellEditEvent;


所以当你定义

EventHandler<CellEditEvent<BillingTableRow, String>>


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

要修复此问题,请删除该导入内容,然后进行写操作

EventHandler<TreeTableColumn.CellEditEvent<BillingTableRow, String>>

10-02 05:43