Проблема:
Я хочу перемещаться по TableView от одной ячейки к следующей правой соседней ячейке в JavaFX с помощью клавиши TAB.
Примечание: TableView настроен для редактирования.И CellSelection тоже включен.
tableReceipt.getSelectionModel().setCellSelectionEnabled(true);
Обработка KeyPressedEvent, по-видимому, не является моей проблемой, но запрашивает фокусировку отдельной ячейки справа от текущей ячейки.
Iможно фокусировать одну ячейку, но когда я нажимаю клавишу TAB, фокус выходит за пределы таблицы на другие элементы формы.
TableView содержит некоторые редактируемые TextFieldTableCells и один редактируемый ComboBoxTableCell.
Я неиспользуйте пользовательский класс для редактируемых ячеек, но код, подобный следующему:
Callback<TableColumn<Receipt, int>, TableCell<Receipt, int>> tfCallBack = TextFieldTableCell.forTableColumn();
columnAmount.setCellFactory(tfCallBack);
для TableCell с редактируемой природой TextField.
Мой вопрос:
Как я могу реализовать решение для решения моей проблемы?Теоретическое решение тоже поможет.Я уже искал эту тему, но нашел только пример, использующий пользовательский класс EditableCell.Я думаю, что должно быть решение с использованием метода обратного вызова, как и я.
Подход к решению:
tableReceipt.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.TAB) {
tableReceipt.getFocusModel().focusRightCell();
Robot r = new Robot();
r.keyPress(KeyCode.ENTER);
}
}
});
С помощью этого кода я могу получить фокус правой ячейкирядом с текущим.И мне нужно клавишу ENTER, чтобы включить редактируемый режим ячейки.Но когда я нажимаю TAB на клавиатуре, новое значение не фиксируется.Например, я нажимаю «2», значение по умолчанию - «0», а после нажатия клавиши TAB значение снова «0».
Вопрос № 2:
Какмогу ли я объединить код выше с changeListener / onEditCommitListener, чтобы новое значение сохранялось в ячейке после нажатия клавиши TAB?
Спасибо.