当前位置: 首页 > 知识库问答 >
问题:

TableView中“Edit”方法的问题

花烨
2023-03-14

我正在学习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 !但是TableColumn !,*>!是预期的

我做错了什么?

共有1个答案

阴英武
2023-03-14

也许你需要

    tableView.setOnKeyPressed { event ->
        val pos = tableView.focusModel.focusedCell
        if (pos != null && event.code.isLetterKey) {
            tableView.edit(pos.row, tableView.columns[pos.column])
        }
    }
 类似资料:
  • 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图。但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好。打开Models \ Movie.cs文件,并添加高亮行如下所示: using System; using System.ComponentModel.DataAnnotations; using System.Data.E

  • null 还有更多,但没有一个解决方案对我有效。 下面是我的代码:类Employee 班人

  • 本文向大家介绍iOS中3DTouch预览导致TableView滑动卡顿问题解决的方法,包括了iOS中3DTouch预览导致TableView滑动卡顿问题解决的方法的使用技巧和注意事项,需要的朋友参考一下 1.发现问题 今天一早来公司,一个同事举着他的6p对我们说:“你看看这是嘛啊...怎么划不动啊...”我一看,果然,滑两下TableView,大概加载2页多就卡飞了...顿时想以是他机子太老了,物

  • 问题内容: 我是JavaFX8的新手,我正在尝试使用initialize方法在控制器中向TableView提供一些数据。我看到了很多关于它的话题,尝试了很多东西,但是对我来说不起作用。 还有很多,但是没有一种解决方案对我有用。 这是我的代码: class Employee class Person 这是定义用户界面的FXML: ConsultHR.fxml 最后是控制器:类ConsultHRCon

  • 在关联编辑器中打开当前脚本进行编辑。 Edit Edit 命令使用注册表中与 "edit" 操作关联的编辑器 (如果没有则为记事本) 打开当前脚本进行编辑. 然而, 如果已经有一个编辑器窗口中打开了这个脚本 (根据窗口标题判断), 那么会激活这个窗口而不打开编辑器的新实例. 在已编译脚本中执行此命令将没有效果. 相关提示,可以在多种编辑器中启用 AutoHotkey 语法高亮——请参阅下面。此外,

  • 情况是这样的:我有一个ObservableSet(因为我的数据的ID字段必须是唯一的),它有一个侦听器。该侦听器更新ObservableList。ObservableList反过来由TableView监听。(根据注释,这都是必要的,因为在JavaFX中不能使用ObservableSet支持TableView。) 然而,我们发现对集合执行多个操作不会触发TableView的刷新。 null 但是,编