"编辑"的问题TableView中的方法

时间:2017-05-21 17:44:39

标签: javafx javafx-8 kotlin

我学习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;!预计

我做错了什么?

1 个答案:

答案 0 :(得分:0)

也许你需要

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