我使用GUI制作了一个数独游戏,并将MaskFormatter用于JFormattedTextFields:

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


但是我的问题是,当打开窗口并单击这些字段之一时,无法键入内容,
它仅适用于第二次尝试,即当我单击另一个字段然后返回到第一个字段时。

是否需要先失去焦点才能激活?

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

这是它的样子



编辑:问题在这里:

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


如果没有setText(“”),它就可以正常工作。

最佳答案

我认为您在创建MaskFormatter的对象时遇到问题。
您可以使用遮罩模式创建对象,然后设置有效字符。

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


当您在文本字段上单击并键入任何数字(仅1-9)时,它可以正常工作,但您键入任何非数字则不允许。

谢谢,
吉涅什·哥达迪亚(Jignesh Gothadiya)

10-08 19:08