5

私は数独ソルバーに取り組んでおり、ユーザーがセルに入力できる数字の量を制限しようとしているだけでなく、数字のみを入力できるようにしています。現在、文字も受け入れます。現時点では次のように動作します: ユーザーが「11125455876」と入力すると、最後に入力された数字 (この場合は「6」) が使用されます。ユーザーが単一のセルに入力できる数字の量を 1 に制限し、数字1-9のみを受け入れたいと思います。どうすればそれができるのかよくわかりません。そのため、前の数字などを上書きするだけで、文字キーを「a」として押しても何も起こらないはずです。

これが私のコードです:

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ます。

4

2 に答える 2

3
NumberFormat f = NumberFormat.getInstance();
f.setMaximumIntegerDigits(1);
f.setMinimumIntegerDigits(0);
f.setGroupingUsed(false);

MaskFormat インストレッドを使用したい場合:

MaskFormatter f = new MaskFormatter( "#" );
f.setValidCharacters("123456789");
于 2013-04-10T16:30:50.407 に答える
0

以下のリンクにあるように、独自のフォーマッタを作成できます。

JTextField は文字数の入力を制限し、数値のみを受け入れます

于 2013-04-10T17:35:33.997 に答える