在TableView中的“编辑”方法的问题

我正在学习kotlin和javafx。 我正在尝试设置一个事件。

这个Java代码的作品:

tableView.setOnKeyPressed(event -> { TablePosition<?, ?> pos = tableView.getFocusModel().getFocusedCell(); if (pos != null && event.getCode().isLetterKey()) { tableView.edit(pos.getRow(), pos.getTableColumn()); } }); 

在kontlin相同的代码(不工作):

 class DynamicTableView : Application() { @Throws(Exception::class) override fun start(stage: Stage) { val tableView = TableView<ObservableList<String>>() tableView.setEditable(true) tableView.getSelectionModel().setCellSelectionEnabled(true) tableView.setOnKeyPressed { event -> val pos = tableView.focusModel.focusedCell if (pos != null && event.code.isLetterKey) { tableView.edit(pos.row, pos.tableColumn) } } Scene scene = new Scene(tableView); primaryStage.setScene(scene); primaryStage.setWidth(400); primaryStage.setHeight(400); primaryStage.setTitle("test"); primaryStage.show(); } companion object { @JvmStatic fun main(args: Array<String>) { launch(DynamicTableView::class.java) } } } 

Kotlin:tableView.edit(pos.row,pos.tableColumn)方法tableColumn返回错误的类型。

逐字:类型推断失败。 预期的类型不匹配:推断的类型是TableColumn <Any!,Any!>! 但TableColumn <ObservableList <String>!,*>! 预计

我究竟做错了什么?

也许你需要

  tableView.setOnKeyPressed { event -> val pos = tableView.focusModel.focusedCell if (pos != null && event.code.isLetterKey) { tableView.edit(pos.row, tableView.columns[pos.column]) } }