我在用ActionListener更新字符串或按下按鈕時遇到問題。讓我展示一段代碼的摘要:通過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」作爲答案,並將其提交
- 因此,MessageDialog似乎說的答案是正確的
- 隨機方法會選擇第二用戶問題
- 的JLabel獲取的經更新的新問題「b」
如果用戶輸入「b」(這應該是正確的)
- MessageDialog會說答案是錯誤的。
如果用戶輸入 「A」(這是應該不會錯)
- MessageDialog會說,答案是正確的。
由此我可以得出結論,由於某種原因,字符串實際上並沒有改變因此如果else語句看到它仍然爲「A」,而不是「B」和檢查對錯誤的問題的答案。
我不太確定,如果我的理解是正確的,但經過一些嘗試和錯誤後,我發現這是問題所在。我也嘗試通過用ques = "b"
替換其他代碼來強制更改字符串,但它仍然不起作用。
這是我現在可以闡述的最好的,但如果你仍然不清楚隨意問任何問題,所以我可以改善我的問題。此外,預先感謝有望找出解決方案來解決問題。
考慮發佈演示您的問題的最小代碼示例,[SSCCE](http://sscce.org)。這將允許我們運行你的代碼並修改它,甚至可以糾正它。請在回覆之前閱讀鏈接,因爲它提供了關於SSCCE要求的許多重要細節。此外,您的設計具有糟糕的代碼味道,並且會過度使用靜態字段。 –
此外,您不會想要硬編碼您的正確答案或問題。這應該是數據的一部分,而不是代碼。 –