我在JavaFX上有一个应用程序。在这个应用程序中,我需要实现该列的编辑器。在旧版本的代码中运行得非常完美:
myColumn.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<MyRowDataObject, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<MyRowDataObject, String> t) {
((MyRowDataObject) t.getTableView().getItems().get(
t.getTablePosition().getRow())
).setFirstName(t.getNewValue());
}
}
);
但是当我尝试使用lambda
重写代码时myColumn.setOnEditCommit((TableColumn.CellEditEvent event) ->
((MyRowDataObject) event.getTableView().getItems().get(event.getTablePosition().getRow())).setEmail(event.getNewValue().toString())
);
我收到错误:错误:java:不兼容的类型:lambda表达式中不兼容的参数类型 告诉我如何指定lambda表达式的类型?
答案 0 :(得分:2)
也许有人会感兴趣,转而编译代码如下。
myColumn.setOnEditCommit(event -> {
final TableColumn.CellEditEvent _evn = (TableColumn.CellEditEvent) event;
((MyRowDataObject) _evn.getTableView().getItems().get(_evn.getTablePosition().getRow())).setEmail(_evn.getNewValue().toString());
});