我正在做一个数独求解器,为此我希望我的 JTextFields 只接受数字 123456789 之一作为有效输入。因此,我将 MaskFormatter 与 JFormattedTextField 一起使用。但是,当我通过执行 .setText("") 清除所有 TextFields 时,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
此外,经过更多测试后,似乎在清除所有框后,您可以键入很多不应该存在的字符,但是当您单击另一个字段时,所有这些字符都会消失。然后,如果您单击其他框,您之前写的数字将出现。
不要得到这个!