私は数独ソルバーを実行しています。そのために、JTextFieldsが有効な入力として数値123456789の1つのみを受け入れるようにします。したがって、私はJFormattedTextFieldと一緒にMaskFormatterを使用します。ただし、.setText( "")を実行してすべてのTextFieldをクリアすると、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
また、さらにテストを行った後、すべてのボックスをクリアすると、そこにあるべきではない多くの文字を入力できるように見えますが、別のフィールドをクリックすると、すべての文字が消えます。次に、他のボックスをクリックすると、前に書いた番号が表示されます。
これを取得しないでください!