Java - JFormattedTextField在第一次尝试时不允许输入

时间:2013-05-20 19:02:15

标签: java swing caret sudoku jformattedtextfield

我正在制作一个带有GUI的小数独游戏,并为JFormattedTextField使用MaskFormatter:

 formatter = new MaskFormatter(s);
 formatter.setValidCharacters("123456789");

但我的问题是,当窗口打开并点击其中一个字段时,无法输入内容,
它只适用于第二次尝试,即当我点击另一个字段然后回到第一个字段时。

是否必须首先失去焦点才能激活?

如果我的某些代码是必要的,请告诉我。

这就是它的样子

enter image description here

编辑:问题在于:

if (guessMatrix[i][j] == 0) {
    tfM[j][i].setBackground(Color.yellow);
    tfM[j][i].setText("");

如果没有setText(“”),它的效果非常好。

1 个答案:

答案 0 :(得分:0)

我认为你在MaskFormatter的创建对象中遇到了问题。 使用屏蔽模式创建对象,然后设置有效字符后。

 MaskFormatter formatter = new MaskFormatter("#");
 formatter.setValidCharacters("123456789");
 JFormattedTextField txt = new JFormattedTextField(formatter);

这项工作非常完美,当您单击文本字段并键入任何数字(仅限1-9)时,它允许输入任何非数字,然后不允许。

谢谢, Jignesh Gothadiya