正如它所说的那样,我不确定如何遍历数组,因此它会在每个窗格中显示问题,我有8个窗格,每个窗格应该包含一个问题,我已设法让它工作一个(问题1显示数组中的第一个条目),但不显示其他条目。
有什么建议吗?
int total = 0;
int counter = 0;
JPanel question1 = new JPanel();
JPanel question2 = new JPanel();
JPanel question3 = new JPanel();
JPanel question4 = new JPanel();
JPanel question5 = new JPanel();
JPanel question6 = new JPanel();
JPanel question7 = new JPanel();
JPanel question8 = new JPanel();
JTabbedPane quiz = new JTabbedPane();
JLabel lblQuestion1 = new JLabel();
JLabel lblQuestion2 = new JLabel();
JLabel lblQuestion3 = new JLabel();
JLabel lblQuestion4 = new JLabel();
JLabel lblQuestion5 = new JLabel();
JLabel lblQuestion6 = new JLabel();
JLabel lblQuestion7 = new JLabel();
JLabel lblQuestion8 = new JLabel();
JButton question1A = new JButton("Answer A");
JButton question1B = new JButton("Answer B");
JButton question1C = new JButton("Answer C");
JButton question2A = new JButton("Answer A");
JButton question2B = new JButton("Answer B");
JButton question2C = new JButton("Answer C");
JButton question3A = new JButton("Answer A");
JButton question3B = new JButton("Answer B");
JButton question3C = new JButton("Answer C");
Problem[] probList = new Problem[5];
public QuizEasy(){
createLabel();
createTabs();
questionsEasy();
problems();
nextQuestion();
updateScreen();
setTitle("Easy Questions");
setSize(680,300);
getContentPane().add(quiz);
JButton finish = new JButton("Finish Quiz");
question8.add(finish);
ButtonHandler phandler = new ButtonHandler();
finish.addActionListener(phandler);
setVisible(true);
}
public void nextQuestion(){
//go forward one question if possible
counter++;
if (counter >= probList.length){
counter = probList.length - 1;
} // end if
updateScreen();
}
public void updateScreen(){
Problem p = probList[counter];
lblQuestion1.setText(p.getQuestion());
question1A.setText(p.getAnsA());
question1B.setText(p.getAnsB());
question1C.setText(p.getAnsC());
lblQuestion2.setText(p.getQuestion());
question2A.setText(p.getAnsA());
question2B.setText(p.getAnsB());
question2C.setText(p.getAnsC());
}
public void questionsEasy(){
question1.add(question1A);
question1.add(question1B);
question1.add(question1C);
question2.add(question2A);
question2.add(question2B);
question2.add(question2C);
question3.add(question3A);
question3.add(question3B);
question3.add(question3C);
}
public void problems(){
probList[0] = new Problem(
"What is the meaning of life?",
"Only god knows",
"42",
"huh?",
"B"
);
probList[1] = new Problem(
"What level woodcutting do you need to cut oaks in runescape",
"15",
"20",
"99",
"C"
);
probList[2] = new Problem(
"Who has recieved the highest amount of oscars?",
"Walt Disney",
"You",
"Leonardo Di Caprio",
"A"
);
probList[3] = new Problem(
"What is the most spoken native tounge in the world?",
"English",
"Ailien",
"Mandarin",
"C"
);
probList[4] = new Problem(
"What is the airspeed velocity of an unladen swallow?",
"42 beats per second",
"10 miles per hour",
"African or European?",
"C"
);
}
public void createLabel(){
/*JLabel easyQuestion1 = new JLabel();
easyQuestion1.setText("What level do you need in the game Runescape to cut oak?");
question1.add(easyQuestion1);*/
lblQuestion1 = new JLabel("Question");
lblQuestion2 = new JLabel("Question");
lblQuestion3 = new JLabel("Question");
lblQuestion4 = new JLabel("Question");
lblQuestion5 = new JLabel("Question");
lblQuestion6 = new JLabel("Question");
lblQuestion7 = new JLabel("Question");
lblQuestion8 = new JLabel("Question");
question1.add(lblQuestion1);
question2.add(lblQuestion2);
question3.add(lblQuestion3);
question4.add(lblQuestion4);
question5.add(lblQuestion5);
question6.add(lblQuestion6);
question7.add(lblQuestion7);
question8.add(lblQuestion8);
}
public void createTabs(){
quiz.addTab("Question 1", question1);
quiz.addTab("Question 2", question2);
quiz.addTab("Question 3", question3);
quiz.addTab("Question 4", question4);
quiz.addTab("Question 5", question5);
quiz.addTab("Question 6", question6);
quiz.addTab("Question 7", question7);
quiz.addTab("Question 8", question8);
}
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
showSummary();
}
}
public void showSummary(){
JOptionPane.showMessageDialog(null,"You have completed the quiz, here are your results"
);
System.exit(0);
}
public static void main(String[] args) {
QuizEasy tab = new QuizEasy();
}
}
答案 0 :(得分:2)
为了简化操作,您可以创建一个名为CreateTabs的方法,该方法将根据您的问题列表构建每个选项卡(probList)。请参阅以下代码:
public void CreateTabs() {
JPanel question = null;
JLabel lbQuestion = null;
JButton ansA = null;
JButton ansB = null;
JButton ansC = null;
for (int i=0;i<probList.length;i++) {
question = new JPanel();
lbQuestion = new JLabel(probList[i].getQuestion());
question.add(lbQuestion);
ansA = new JButton(probList[i].getAnsA());
ansB = new JButton(probList[i].getAnsB());
ansC = new JButton(probList[i].getAnsC());
question.add(ansA);
question.add(ansB);
question.add(ansC);
quiz.addTab("Question " + (i+1), question);
}
}
在QuizEasy构造函数中,你会有类似的东西:
public QuizEasy() {
problems();
CreateTabs();
...
}