Я делаю программу решения sodoku на Java с библиотекой JavaFX. Программа включает в себя интерактивную доску содоку, состоящую из серии TextField
s в GridPane
. Плата выглядит так:
Прямо сейчас курсор находится в верхнем левом углу TextField
. Если бы в поле был текст, пользователь мог бы перемещать курсор по тексту с помощью клавиш со стрелками. Однако я хочу, чтобы пользователь мог использовать клавиши со стрелками для перехода к другому TextField
. Проблема в том, что поле находится в режиме ввода (я не знаю официальной терминологии), поэтому клавиши со стрелками только перемещают курсор в другую точку текста, но в остальном он остается в том же поле.
Это то, что я имею в виду:
Представьте, что линия, которую я нарисовал, — это курсор. Прямо сейчас, если я нажму клавишу со стрелкой влево, курсор переместится влево от 1, но вместо этого я хочу, чтобы он переместил TextField
слева. Если я нажму клавишу со стрелкой вниз, ничего не произойдет, потому что нет текста ниже 1 для перехода к курсору, но вместо этого я хочу, чтобы он переместился к TextField
ниже.
Код для GridPane
таков:
TextField[][] squares = new TextField[9][9];
GridPane grid = new GridPane();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
squares[i][j] = new TextField();
squares[i][j].setPrefHeight(8);
squares[i][j].setPrefWidth(25);
grid.add(squares[i][j], j, i);
}
}
grid.setAlignment(Pos.CENTER);
Массив squares
предназначен для меня, чтобы иметь доступ к отдельным TextField
s в GridPane
.
Любые предложения о том, как я могу это исправить?