Я делаю решатель судоку, и для этого я хочу, чтобы мои JTextFields принимали только одно из чисел 123456789 в качестве допустимого ввода. Поэтому я использую MaskFormatter вместе с JFormattedTextField. Однако, когда я очищаю все поля TextFields с помощью .setText (""), MaskFormatter больше не работает. После очистки текстовых полей я могу снова написать в них что угодно. Почему и как мне это исправить?
Мой код в основном:
MaskFormatter formatter = new MaskFormatter("#");
formatter.setValidCharacters("123456789");
Font textFieldFont = new Font("Verdana", Font.BOLD, 30);
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
southPanel.setBorder(lineBorder);
field[i][j] = new JFormattedTextField(formatter);
field[i][j].setHorizontalAlignment(JTextField.CENTER);
field[i][j].setFont(textFieldFont);
southPanel.add(field[i][j]);
}
}
Тогда, когда я это очищу:
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
field[i][j].setText("");
}
}
РЕДАКТИРОВАТЬ: Вот весь код, я не написал большую его часть, потому что мой друг сделал это. Я только сейчас немного исправлю GUI.
http://dl.dropbox.com/u/4018313/SudokuSolver.zip
Кроме того, после некоторого дополнительного тестирования кажется, что после очистки всех полей вы можете ввести много символов, которых там быть не должно, но при нажатии на другое поле все они исчезнут. Затем, если вы щелкнете в других полях, появятся цифры, которые вы написали ранее.
Не понимаю!