1
我正在創建一個兒童棋盤遊戲,詢問隨機數學問題和玩家如果回答正確,他們會移動。我有一個主要的BoardGUI類,包括2個面板。一個用於董事會,另一個用於提問。正確回答時顯示下一個測驗字符串
我遇到了問題面板的問題。我正在閱讀來自文本文件的問題,並將每個問題保存爲數組中的對象。問題是我可以正確回答一個問題,它會刷新一個新的問題,但不會這樣做。
我將粘貼QuestionGUI類,因爲我認爲這是一個與隨機數生成相同問題的問題。
public class QuestionGUI extends JPanel implements ActionListener {
JLabel question;
JButton btnAnswers[];
Reader r1 = new Reader();
Questions q1 = new Questions();
Random rand = new Random();
boolean answered;
int random = rand.nextInt(r1.ArraySize());
int random2 = rand.nextInt(r1.ArraySize());
int length = q1.getArrayItem(random).getAnswers().length;
public QuestionGUI() {
questionInit(random);
}
public void questionInit(int randomNum) {
this.random = randomNum;
//gets the answers from the array obj
String[] answers = q1.getArrayItem(random).getAnswers();
//sets the question from question of array obj (same obj as answers I assumed, using random num)
question = new JLabel("<html>" + (q1.getArrayItem(random).getQuestion()) + "</html>", SwingConstants.CENTER);
question.setPreferredSize(new Dimension(280, 100));
add(question);
btnAnswers = new JButton[length];
for (int i = 0; i < length; i++) {
btnAnswers[i] = new JButton(answers[i]);
btnAnswers[i].setPreferredSize(new Dimension(280, 60));
btnAnswers[i].addActionListener(this);
add(btnAnswers[i]);
}
}
@Override
public void actionPerformed(ActionEvent e) {
//sets the correct answers to question also using the random num
String[] correctAnswers = q1.getArrayItem(random).getCorrectAnswers();
for (int i = 0; i < length; i++) {
if (e.getSource().equals(btnAnswers[i])) {
String tmp1 = btnAnswers[i].getText();
if (Arrays.asList(correctAnswers).contains(tmp1)) {
System.out.println("Correct");
removeAll();
revalidate();
answered = true;
questionInit(random2);
repaint();
} else {
answered = false;
}
}
}
}
public boolean getAnswered() {
return answered;
}
}
我想你可能是對的!我一直盯着它太久沒有意識到這一點。新鮮的眼睛總是很好! – Travisty