我使用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)