在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]) } }