pracuję na solver sudoku i próbuję ograniczyć ilość numerów użytkownik może wprowadzić do komórki, a także TYLKO jest w stanie wprowadzić cyfry, obecnie również akceptuje litery. W tej chwili działa to tak: Jeśli użytkownik wpisze "11125455876", po prostu użyje ostatniego wprowadzonego numeru (w tym przypadku "6"). Chciałbym ograniczyć liczbę liczb, które użytkownik może wprowadzić w pojedynczej komórce do 1 i akceptować tylko numery: 1-9. Nie jestem do końca pewien, jak to zrobić. Może więc nadpisze poprzedni numer lub coś takiego, a jeśli naciśnie klawisz literowy jako "a", nic nie powinno się wydarzyć.granica wprowadzania numeru JTextField
Oto mój kod:
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]);
}
}
}
Jak widać obecnie używam number format
.
Użyj [ 'DocumentFilter'] (http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/text/DocumentFilter.html), aby ograniczyć nakłady. –
@Extreme Coders Czy możesz napisać odpowiedź na to, jak powinno wyglądać w moim przypadku? Nie jestem z tym zbyt zaznajomiony. Co należy zmienić? – Rob
http://stackoverflow.com/questions/3519151/how-to-limit-the-number-characteri-n-ntextfield – herinkc