简体   繁体   中英

I'm using JTabbedPane for my quiz program, not sure how to get my buttons to display the answers

As it says, I'm not sure how to loop through the array so it would display the question in each pane, I got 8 panes and each of them should contain a question, I've managed to get it working for one (question 1 displays first entry in the array) but not the others.

Any suggestions?

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();

}

}

To make things easier you could create a method called CreateTabs which would build every tab based on your list of problems(probList). See code below:

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); 
    }
}

In the QuizEasy constructor you would have something like:

public QuizEasy() {
    problems();
    CreateTabs();
    ...
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM