2016-03-30 3 views
-1

これは、どのように配列をループするかわからないので、 8つのペインがあり、それぞれに質問が含まれていなければなりません。質問1は配列1の最初のエントリを表示しますが、他のものは表示しません。私のクイズプログラムにJTabbedPaneを使用していますが、答えを表示するためのボタンを取得する方法がわかりません

提案がありますか?

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

} 

}

+3

まず第一に、メソッド、クラス、コレクションと配列を使用して、すべての不要なコードの冗長性を取り除きます。さもなければあなた(そして私たち)はデバッグの悪夢に悩まされます。 –

答えて

2

あなたが問題のリスト(probList)に基づいて、すべてのタブを建設するCreateTabsというメソッドを作成することができ、物事を容易にします。あなたのようなものだろうQuizEasyコンストラクタで

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

:以下のコードを参照してください

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

私はこれが私が探していたものだと思います、明日はすべて試してみて、皆さんに戻ってください、ありがとう! – breadkun

+0

ありがとう、これはまさに私が探していたものでした。私はどのように配列をループするか分からなかった。 – breadkun

関連する問題