我学习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&lt; Any!,Any!&gt;!但TableColumn&lt; ObservableList&lt; String&gt;!,*&gt;!预计
我做错了什么?
答案 0 :(得分:0)
也许你需要
tableView.setOnKeyPressed { event ->
val pos = tableView.focusModel.focusedCell
if (pos != null && event.code.isLetterKey) {
tableView.edit(pos.row, tableView.columns[pos.column])
}
}