0

我在使用 ActionListener 或按下按钮更新字符串时遇到问题。让我展示一段代码摘要:

public class GUI extends JFrame {
//Importing some data from the main Class
public static String ques = Main.getQues();
public static String QuesExtra = Main.getQuesExtra();

    //More GUI Stuff here

    JButton btnSubmit = new JButton("Submit!");
    btnSubmit.setBounds(557, 295, 117, 42);
    contentPane.add(btnSubmit);

    textField1 = new JTextField();
    textField1.setFont(new Font("Tahoma", Font.PLAIN, 25));
    textField1.setBounds(214, 301, 256, 36);
    contentPane.add(textField1);
    textField1.setColumns(10);

    textField2 = new JTextField();
    textField2.setFont(new Font("Tahoma", Font.PLAIN, 25));
    textField2.setColumns(10);
    textField2.setBounds(480, 281, 55, 36);
    contentPane.add(textField2);

    lblQuestion = new JLabel(ques, SwingConstants.CENTER);
    lblQuestion.setFont(new Font("Tahoma", Font.PLAIN, 50));
    lblQuestion.setBounds(10, 30, 664, 72);
    contentPane.add(lblQuestion);

    SubmitHandlerClass submithandler = new SubmitHandlerClass();
    btnSubmit.addActionListener(submithandler);
}

private class SubmitHandlerClass implements ActionListener {
    public void actionPerformed(ActionEvent event) {

        answer1 = textField1.getText();
        answer2 = textField2.getText();

        if (ques.equals("a")){
            if (answer1.equals("a")) {
                check = "Correct";
            } else {
                check = "Wrong";
            }
        } else if(ques.equals("b")){
            if (answer1.equals("b")) {
                check = "Correct";
            } else {
                check = "Wrong";
            }
        }
        }

        JOptionPane.showMessageDialog(null, ("Your Answer is " + check + "!"));

        new Main().random();
        //I'm guessing the problem Lies here
        String ques = Main.getQues();
        String QuesExtra = Main.getQuesExtra();

        lblQuestion.setText(ques);
        lblQuesextra.setText(QuesExtra);

    }
}   
}

首先,让我解释一下主类。主类包括 java.util.Random,它将为 GUI 类提供随机问题给用户。然后将问题转移到 GUI 类以更新 JLabel。点击“提交”按钮,它会检查答案是否正确。此外,它将帮助生成一个新问题,然后 setText 将更新 JLabel。

一切正常,除了问题似乎没有更新,尽管 JLabel 发生了变化。这很难解释,所以我将其保留为点形式。

  • JLabel 显示问题“a”
  • 用户输入“a”作为答案并提交
  • 因此,出现一个 MessageDialog 说答案是正确的
  • 随机方法会为用户选择第二个问题
  • JLabel 获取更新为新问题“b”

如果用户输入“b”(应该是正确的)

  • MessageDialog 会说答案是错误的。

如果用户输入“a”(这应该是错误的)

  • MessageDialog 会说答案是正确的。

由此我可以得出结论,由于某种原因,字符串实际上并没有改变,因此 if else 语句仍将其视为“a”而不是“b”,并针对错误的问题检查答案。

我不太确定我的理解是否正确,但经过一些尝试和错误后,我发现这就是问题所在。我还尝试通过替换其他代码来强制更改字符串,ques = "b"但它仍然不起作用。

这是我现在可以详细说明的最好的方法,但是如果您仍然不清楚,请随时提出任何问题,以便我改进我的问题。另外,提前感谢您查看希望提出解决问题的解决方案。

4

0 回答 0