我为我的孩子编写了一个程序来练习基本算术。JFrame 上有一个 JTextField,学生在其中键入给定数学问题的答案(例如 8+8,他们键入 16,回车)。此字段仅接受整数值作为 DocumentFilter 的条目。
那部分工作得很好。我想要做的是避免让用户不得不按下回车键。理想情况下,当用户键入第一个数字 (1) 时,会检查是否 1 == 16。如果不是,则不会发生任何事情。当他们随后键入 6 时,文本字段显示数字 16。我想运行检查以验证 16 == 16,然后处理输入,就好像用户也按下了 Enter 键一样。
txtAnswer.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
respondToAnswer(isTimed);
} else {
/* Check if the correct answer has been entered */
System.out.println(txtAnswer.getText());
//int userAnswer = Integer.parseInt(txtAnswer.getText());
//if (userAnswer == correctAnswer {
// respondToAnswer(isTimed);
//}
}
};
});
这段代码不太好用。就好像它背后是一个角色。我的意思是当用户按下“1”键时(在我的 8+8=16 示例中),控制台输出是一个空字符串。当他们按下“6”键时,输出为“1”。如果他们随后按下另一个整数键,则输出为“16”。它总是落后一位数。因此,我无法捕获文本字段的全部内容以查看它是否与正确答案匹配。
有人看到我错过了什么吗?
谢谢!