在我的一个项目中,我正在使用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&lt; TreeTableColumn.CellEditEvent&gt;)不适用于参数(new EventHandler&lt; TableColumn.CellEditEvent&lt; BillingTableRow,String&gt;&gt;(){})
我感谢您解决我的问题。
答案 0 :(得分:1)
那是因为你有一个导入
import javafx.scene.control.TableColumn.CellEditEvent;
所以当你定义
时EventHandler<CellEditEvent<BillingTableRow, String>>
编译器将此CellEditEvent
设为TableColumn.CellEditEvent
而不是TreeTableColumn.CellEditEvent
,并提供错误。
要解决此问题,请删除该导入并写入expilcitly
EventHandler<TreeTableColumn.CellEditEvent<BillingTableRow, String>>