1

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

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

但我的问题是,当窗口打开并单击其中一个字段时,无法输入内容,
它仅在第二次尝试时有效,即当我单击另一个字段然后返回第一个字段时。

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

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

这是它的样子

在此处输入图像描述

编辑:问题出在这里:

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

没有 setText("") 它工作得很好。

4

1 回答 1

0

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

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

当您单击文本字段并输入允许的任何数字(仅限 1-9)但您输入任何非数字然后不允许时,此功能非常有效。

谢谢,Jignesh Gothadiya

于 2013-05-21T05:47:16.520 回答