簡體   English   中英

我正在為測驗程序使用JTabbedPane,不確定如何獲取按鈕以顯示答案

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

就像我說的那樣,我不確定如何遍歷數組,因此它會在每個窗格中顯示問題,我有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();

}

}

為了使事情變得容易,您可以創建一個稱為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();
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM