JTextField Constraint Input Number

I am working on a sudoku solver, and I am trying to limit the number of numbers that the user can enter in a cell, and ONLY capable of entering numbers, currently it also accepts letters. At the moment, it works as follows: if the user enters "11125455876", he will only use the last entered number (in this case, "6"). I would like to limit the number of numbers that the user can enter in one cell in 1, and accept only numbers 1-9 . I'm not quite sure how I can do this. So maybe he just overwrites the previous number or something else, and if I press the letter key as "a", nothing should happen.

Here is my code:

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.

+5
2
NumberFormat f = NumberFormat.getInstance();
f.setMaximumIntegerDigits(1);
f.setMinimumIntegerDigits(0);
f.setGroupingUsed(false);

MaskFormat instread:

MaskFormatter f = new MaskFormatter( "#" );
f.setValidCharacters("123456789");
+3
0

All Articles