子供たちが基本的な算数を練習するために書いたプログラムがあります。JFrame には JTextField があり、学生は与えられた数学の問題の答えを入力します (8+8 のように、16 を入力して Enter を押します)。このフィールドは、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文字後ろのようです。つまり、ユーザーが「1」キーを押すと (私の 8+8=16 の例では)、コンソール出力は空の文字列になります。「6」キーを押すと、出力は「1」になります。次に別の整数キーを押すと、出力は「16」になります。常に一桁遅れています。このため、テキスト フィールドの内容全体をキャプチャして、正解と一致するかどうかを確認することはできません。
私が欠けているものを見た人はいますか?
ありがとう!