Я работаю на судоку решатель, и я стараюсь, чтобы ограничить количество номеров пользователь может ввести в клетку, а также ТОЛЬКО будучи в состоянии вводить цифры, в настоящее время это также принимает письма. На данный момент он работает следующим образом: если пользователь вводит «11125455876», он будет использовать только последнее введенное число (в данном случае «6»). Я хотел бы ограничить количество номеров, которые пользователь может ввести в одну ячейку в 1, и принимать только номера 1-9. Я не совсем уверен, как я могу это сделать. Так что, возможно, он просто перезапишет предыдущий номер или что-то еще, и если я нажму буквенный ключ как «а», ничего не должно произойти.Ограничение ввода номера JTextField
Вот мой код:
public PanelGUI(int size) {
super(size);
NumberFormat f = NumberFormat.getInstance();
f.setMaximumIntegerDigits(1);
f.setMinimumIntegerDigits(0);
f.setGroupingUsed(false);
cells = new JTextField[size][size];
panel.setLayout(new GridLayout(size, size));
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cells[i][j] = new JFormattedTextField(f);
cells[i][j].setEditable(true);
cells[i][j].setFont(boldFont);
cells[i][j].setBorder(BorderFactory.createMatteBorder(1, 1, 1,
1, Color.white));
cells[i][j].setHorizontalAlignment(JTextField.CENTER);
panel.add(cells[i][j]);
}
}
}
Как вы можете видеть, что я сейчас использую number format
.
Использовать [ 'DocumentFilter'] (http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/text/DocumentFilter.html) для ограничения ввода. –
@Extreme Coders Не могли бы вы написать ответ о том, как он должен выглядеть в моем случае? Я не слишком хорошо знаком с этим. Что нужно изменить? – Rob
http://stackoverflow.com/questions/3519151/how-to-limit-the-number-of-characters-in-jtextfield – herinkc