Javafx 2 JavaFX2.2 TableView:如何在不单击鼠标的情况下编辑表格单元格?

Javafx 2 JavaFX2.2 TableView:如何在不单击鼠标的情况下编辑表格单元格?,javafx-2,Javafx 2,我遇到了可编辑表格单元格的问题。我在我的项目中使用TableView,就像 根据它,我使用setCellFactory方法在TextFieldTableCell类的帮助下将表格单元格重新实现为文本字段。但是,我发现要达到单元格可以编辑的程度,步骤有点复杂: 使用方向键选择表格单元格 按“回车”键将单元格转换为文本字段,以便编辑 单击文本字段可编辑内容 问题是第3步,您必须使用鼠标单击才能在此表格单元格中输入数据 那么,有没有办法避免第三步呢?也就是说,当您只需按“回车”(第2步)时,文本字段允许

我遇到了可编辑表格单元格的问题。我在我的项目中使用TableView,就像

根据它,我使用setCellFactory方法在TextFieldTableCell类的帮助下将表格单元格重新实现为文本字段。但是,我发现要达到单元格可以编辑的程度,步骤有点复杂:

  • 使用方向键选择表格单元格
  • 按“回车”键将单元格转换为文本字段,以便编辑
  • 单击文本字段可编辑内容
  • 问题是第3步,您必须使用鼠标单击才能在此表格单元格中输入数据

    那么,有没有办法避免第三步呢?也就是说,当您只需按“回车”(第2步)时,文本字段允许输入数据

    顺便说一下,英语不是我的母语。希望我已经说清楚了。
    TextFieldTableCell
    是一个
    TableCell
    ,它有一个节点(图形)
    TextField
    ,当单元格处于编辑模式时将呈现该节点。您需要手动聚焦到此文本字段,但使用
    TextFieldTableCell
    无法访问该文本字段。但是,如果您更喜欢教程中描述的替代方法,那么您有机会集中精力。该教程中唯一更改的方法是:

    @Override
    public void startEdit() {
        super.startEdit();
        createTextField();
        setText(null);
        setGraphic(textField);
        textField.selectAll();
        // Set the focus
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                textField.requestFocus();
            }
        });
    }
    

    要在没有鼠标单击事件的情况下在TableView中开始编辑,请调用TreeView.edit(rowIndex,tableColumn)

    例如:

    //create tableview object
    TableView<YourModel> tableView = new TableView<>();
    //create column
    TableColumn<YourModel, String> column = new TableColumn<>("Property Name");
    //add column to tableview
    tableView.getColumns().add(column);
    //... your cell factory and the rest
    //add an item
    tableView.getItems().add(new YourModel());
    //if you want to edit the selected item, get its index
    int selectedIndex = tableView.getSelectionModel().getSelectedIndex();
    //fire edit
    tableView.edit(selectedIndex, column);
    
    //创建tableview对象
    TableView TableView=新建TableView();
    //创建列
    TableColumn=新的TableColumn(“属性名称”);
    //将列添加到tableview
    tableView.getColumns().add(column);
    //... 你的细胞工厂和其他
    //添加项目
    tableView.getItems().add(新建YourModel());
    //如果要编辑所选项目,请获取其索引
    int-selectedIndex=tableView.getSelectionModel().getSelectedIndex();
    //火编辑
    tableView.edit(选择索引,列);