我有一个可编辑的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。
答案 0 :(得分:0)
尝试:
您需要定义一个TablePosition:
实施例:
TablePosition pos = new TablePosition(tableView, 0, null);
将焦点设置为:
tableView.getFocusModel().focus(pos);
答案 1 :(得分:0)
我使用:
tableview.getFocusModel().focus(row, tableColumn);
tableview.requestFocus();
对我有用。