javafx如何请求关注表格单元格?

时间:2016-05-09 04:55:33

标签: javafx tableview

我有一个可编辑的TableView,用于验证tablecells上的输入。如果用户输入无效输入,则会显示一个警告框,并显示错误消息。但是当显示警告框时,TableCell和TableView失去焦点。下面的代码描述了该场景。

tableColumn.setOnEditCommit(evt -> {
    boolean inputValid = // do validation;
    if(!inputValid) {
        int row = tableView.getEditingCell().getRow();
        Alert alert = new Alert(AlertType.ERROR);
        alert.setContentText("Invalid input");
        alert.initModality(Modality.WINDOW_MODAL);
        alert.initOwner(tableView.getScene().getWindow());
        alert.showAndWait();
        tableView.requestFocus(); // get back focus
        tableView.edit(row, tableColumn);
    }
});

这会在显示警告框后将焦点重新收回到TableView,但TableCell中的 TextField没有焦点。怎么做到这一点?顺便说一下,我使用EditingCell TableCell而不是TextFieldTableCell

2 个答案:

答案 0 :(得分:0)

尝试:

您需要定义一个TablePosition:

实施例: TablePosition pos = new TablePosition(tableView, 0, null);

将焦点设置为:

tableView.getFocusModel().focus(pos);

答案 1 :(得分:0)

我使用:

    tableview.getFocusModel().focus(row, tableColumn);
    tableview.requestFocus();

对我有用。