我有一个为孩子们练习基本算术而编写的程序。在JFrame上有一个JTextField,学生在其中输入给定数学问题的答案(例如8+8,他们键入16,然后按回车键)。该字段只接受整数值作为条目,并通过DocumentFilter进行过滤。
这部分功能运行良好。我想做的是避免用户必须按回车键。理想情况下,当用户键入第一个数字(1)时,会检查1是否等于16。如果不是,则不会发生任何事情。当他们随后键入6时,文本字段将显示数字16。我想运行一个检查来验证16 == 16,然后处理该条目,就好像用户也按下了Enter键。
这段代码似乎有些问题,就好像它比实际输入慢一步。我的意思是,当用户按下“1”键(在我的8+8=16的例子中),控制台输出为空字符串。当他们按下“6”键时,输出为“1”。如果他们再按一个整数键,输出就变成了“16”。它总是慢一位。因此,我无法获取文本字段的全部内容以查看是否与正确答案匹配。
有人能看出我错在哪里吗?
谢谢!
这部分功能运行良好。我想做的是避免用户必须按回车键。理想情况下,当用户键入第一个数字(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”。它总是慢一位。因此,我无法获取文本字段的全部内容以查看是否与正确答案匹配。
有人能看出我错在哪里吗?
谢谢!