Java - JFormattedTextField 不允许首次尝试输入

标签 java swing caret sudoku jformattedtextfield

我正在使用 GUI 制作一个小型数独游戏,并为 JFormattedTextFields 使用 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("") 它工作得很好。

最佳答案

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

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

这工作得很好,当您单击文本字段并输入任何数字(仅限 1-9)时,它允许,但您输入任何非数字则不允许。

谢谢, 吉格内什·戈塔迪亚

关于Java - JFormattedTextField 不允许首次尝试输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656501/

相关文章:

java - 从 Java 中的按钮运行可执行程序

java - 没有组件的 WindowBuilder 调色板

javascript - Contenteditable - 从插入符号提取文本到元素末尾

javascript - 如何在 contenteditable div 中聚焦于 <p>

html - 禁用非输入元素的插入符?

Java HPROF 堆转储缺少字段?

允许不可编译代码的#ifdef的Java等价物

java - 如何使用 RestFB 发布带有自定义缩略图的视频?

java - java.awt.EventQueue.getCurrentEventImpl 中的 NullPointerException

java - Japplet 形状未在 Applet 中显示