在TableView JavaFX中设置选项卡光标位置

时间:2017-11-15 13:07:28

标签: java javafx cursor tableview keylistener

我有一个javafx tableview,我正在尝试编写一个keylistener,以便用户可以快速选择行并编辑其内容。

到目前为止,我可以通过按键来对焦桌子,并用数字键按下选择/聚焦一行。然而,我希望用户能够通过行选项卡来选择他想要编辑的单元格。

我的问题是,当我选择一行时按Tab键,它总是从第一行开始选择单元格。

以下是我的主要监听器的代码:

....
else if(code.isDigitKey()){
        TableView tv = scene.getSelectedTable();
        if(tv != null){
            tv.getSelectionModel().select(code.ordinal()-24);
            tv.getFocusModel().focus(code.ordinal()-24);
            //Something required here to set tab position to start of this row
        }else{
            System.out.println("null");
        }
    }

有没有办法设置标签起始位置?

解决方案:

Tab只是转到它知道的下一个JavaFX控件元素。 TableView有焦点,所以当我按Tab键时,它转到下一个控制元素,恰好在表格内。 Tab不会遍历表格单元格。

所以我的工作是在所选行的第一个单元格上调用edit方法:

    ....
else if(code.isDigitKey()){
        TableView tv = scene.getSelectedTable();
        if(tv != null){
            tv.getSelectionModel().select(code.ordinal()-24);
            tv.getFocusModel().focus(code.ordinal()-24);
            tv.edit(code.ordinal()-24, ((TableColumn)(tv.getColumns().get(0))));
        }else{
            System.out.println("null");
        }
    }

然后在我的CellFactory中为该列(恰好是一个Spinner),我重写startEdit:

@Override
public void startEdit(){
    this.spinner.requestFocus();
}

请注意,列和表必须是可编辑的。

0 个答案:

没有答案