【发布时间】:2017-10-21 08:22:23
【问题描述】:
我正在学习 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
我做错了什么?
【问题讨论】:
-
那么第 41 行是什么?
-
tableView.edit(pos.row, pos.tableColumn) 方法 tableColumn 返回了一个无效的类型。
-
tableView.edit(pos.row, tableView.columns.get(pos.column))是类型安全的。 -
谢谢。一切正常。