2016-05-09 2 views
2

У меня есть редактируемый TableView, который проверяет входные данные на табличных ячейках. Если пользователь вводит недопустимый ввод, появится сообщение с сообщением об ошибке. однако, когда отображается окно предупреждения, TableCell и TableView теряет фокус. В приведенном ниже коде описывается сценарий.javafx как запросить фокус на ячейке таблицы?

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 после показа окна предупреждения, но TextField внутри TableCell не имеет фокус. как это сделать? и, кстати, им воспользовалась таблица EditingCell TableCell вместо TextFieldTableCell.

ответ

0

Try:

Вы должны определить TablePosition:

Пример: TablePosition pos = new TablePosition(tableView, 0, null);

Установите фокус на него:

tableView.getFocusModel().focus(pos);

+1

я попробовал это, но это Ждут» т работы. – bazi

Смежные вопросы