2016-03-30 9 views
0

に機能する。これは、あなたが望む結果を得るための方法ですJDialogダイアログに複数の選択肢を追加し、それは私が欲しいもの

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 

    public class VocabHelper { 

     private JFrame mainFrame; 

     private JPanel mainPanel; 

     private JPanel animalPanel; 

     public JDialog animalDialog; 

     private JLabel titleLbl; 

    private JLabel subtitle; 


//Call main GUI 

    public VocabHelper() { 

     mainGUI(); 
    } 

//Main Method 

    public static void main(String[] args) { 
     VocabHelper vocabHelper = new VocabHelper(); 
     vocabHelper.showActionEvents(); 
    } 

//Edit the mainGUI 

    private void mainGUI() { 
     mainFrame = new JFrame("VocabHelper"); 
     mainFrame.setSize(500, 500); 


     /*titleLbl = new JLabel("Vocab Helper", JLabel.CENTER); 
     subtitle = new JLabel("Choose a category to continue", JLabel.CENTER); 
     mainFrame.add(titleLbl); 
     mainFrame.add(subtitle);*/ 

     mainFrame.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent windowEvent) { 
       System.exit(0); 
      } 
     }); 
     mainPanel = new JPanel(); 
     mainFrame.add(mainPanel); 
     mainFrame.setVisible(true); 
    } 

//Create quizGUI 

    public void quizGUI() { 
     quizDialog = new JDialog(); 
     quizDialog.setName("Quiz 1"); 
     quizDialog.setSize(500,500); 
     quizDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
     quizDialog.setVisible(false); 

     addQuizEvent(); 
    } 

//add Buttons and listeners 

    public void showActionEvents() { 

     JButton quizButton = new JButton("quiz"); 
     JButton biologyButton = new JButton("Biology"); 
     JButton geologyButton = new JButton("Geology"); 
     JButton historyButton = new JButton("History"); 
     JButton sportsButton = new JButton("Sports"); 
     JButton techButton = new JButton("Technology"); 

     quizButton.setActionCommand("Quiz"); 
     biologyButton.setActionCommand("Biology"); 
     geologyButton.setActionCommand("Geology"); 
     historyButton.setActionCommand("History"); 
     sportsButton.setActionCommand("Sports"); 
     techButton.setActionCommand("Technology"); 

     QuizButton.addActionListener(new ButtonClickListener()); 
     biologyButton.addActionListener(new ButtonClickListener()); 
     geologyButton.addActionListener(new ButtonClickListener()); 
     historyButton.addActionListener(new ButtonClickListener()); 
     sportsButton.addActionListener(new ButtonClickListener()); 
     techButton.addActionListener(new ButtonClickListener()); 

     mainPanel.add(QuizButton); 
     mainPanel.add(biologyButton); 
     mainPanel.add(geologyButton); 
     mainPanel.add(historyButton); 
     mainPanel.add(sportsButton); 
     mainPanel.add(techButton); 

     mainFrame.setVisible(true); 
    } 
//add events to quiz dialog this is where i want to create the multiple choice questins the classes will be below. 

    public void addQuizEvent() { 
     JButton nextButton = new JButton("Next"); 
     nextButton.setActionCommand("Next"); 
     nextButton.addActionListener(new ButtonClickListener()); 
     quizDialog.add(nextButton); 
     quizDialog.setVisible(true); 
    } 

//When button quiz is pressed open dialog 

    private class ButtonClickListener implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      String command = e.getActionCommand(); 
      if (command.equals("Quiz")) { 
       quizGUI(); 
      } 
     } 
    } 
} 

//Class tester for the multiple choice im thinking this is what goes in the dialog i just dont know how. 

    public class QuizTester 
    { 
    public static void main(String[] args) 
    { 

    //Multiple choice question 
     ChoiceQuestion second = new ChoiceQuestion(); 
     second.setText("In which country was the inventor of Java born?"); 
     second.addChoice("Australia", false); 
     second.addChoice("Canada", true); 
     second.addChoice("Denmark", false); 
     second.addChoice("United States", false); 

    //create quiz and add the questions to the quiz then present the quiz 
     Quiz q = new Quiz(); 
     q.addQuestion(second); 
     q.presentQuestions(); 
    } 
} 

//new class for multiple choice logic 

    import java.util.ArrayList; 

/** 
    A question with multiple choices. 
*/ 

    public class ChoiceQuestion { 
    private ArrayList<String> choices; 

    /** 
     Constructs a choice question with no choices. 
    */ 

    public ChoiceQuestion() 
    { 
     choices = new ArrayList<String>(); 
    } 

    /** 
     Adds an answer choice to this question. 
     @param choice the choice to add 
     @param correct true if this is the correct choice, false otherwise 
    */ 

    public void addChoice(String choice, boolean correct) 
    { 
     choices.add(choice); 
     if (correct) 
     { 
     // Convert choices.size() to string 
     String choiceString = "" + choices.size(); 
     setAnswer(choiceString); 
     } 
    } 

    public void display() 
    { 
     // Display the question text 
     super.display(); 
     // Display the answer choices 
     for (int i = 0; i < choices.size(); i++) 
     { 
      int choiceNumber = i + 1; 
      System.out.println(choiceNumber + ": " + choices.get(i));  
      } 
     } 
    } 

//class for the quiz where the quiz is created. 

     import java.util.ArrayList; 
     import java.util.Scanner; 

/** 
    A quiz contains a list of questions. 
*/ 

     public class Quiz 
     { 
     private ArrayList<Question> questions; 

    /** 
     Constructs a quiz with no questions. 
    */ 

    public Quiz() 
    { 
     questions = new ArrayList<Question>(); 
    } 

    /** 
     Adds a question to this quiz. 
     @param q the question 
    */ 

    public void addQuestion(Question q) 
    { 
     questions.add(q); 
    } 

    /** 
     Presents the questions to the user and checks the response. 
    */ 

    public void presentQuestions() 
    { 
     Scanner in = new Scanner(System.in); 

     for (Question q : questions) 
     { 
      q.display(); 
      System.out.print("Your answer: "); 
      String response = in.nextLine(); 
      System.out.println(q.checkAnswer(response));\ 
//over here display this question but in the dialog and with bubbles that they can click on. 
     } 
    } 
} 
+0

そして、何あなたの質問はありますか? – FredK

+0

私は本当に私が作成したダイアログで多肢選択式の質問を表示する方法を知りたいと思っています。ボタンを押すと、質問に答えることができるようにしたいと思います。または偽の場合は次のものに進みます。基本的にクラスの例をスイングに取り入れる。ごめんなさい。 – SassyRegards201

+0

あなたの質問にはたくさんのコードがありますが、具体的な質問は3つ以上のオプションを持つ 'JDialog'を持つことです。 – Frakcool

答えて

1

に3-4オプションで質問を追加することで、あなたはこのアイデアを取ることができ作りますCardLayoutJFrameのようなものをthisのように実行します。あなたはJDialogのために求めているので、私は彼らとの例を作ったよ:

この例では、Minimal Complete and Verifiable Example (MCVE)またはRunnableを例またはShort, Self Contained, Correct Example (SSCCE)と呼ばれ、あなたは以下の質問にこのような何かを提供しなければなりません。また、tourを受け取り、How to ask a good questionを学ぶことをお勧めします。

またMaking a JOptionPane with 4 optionsをチェックする必要があり、私はまた、ternary演算子を使用して、など、これらのボタンやJTextFieldや画像、として、それらに、より複雑なGUIを追加することができますので、あなたはまた、How to make Dialogsを読んでください、のような:this onethis oneまたはthis oneの場合は、Googleまたはこのサイトの右上にある検索ツールバーを使用してください。

import java.awt.*; 
import javax.swing.*; 
public class DialogExamples { 
    String[] answers = new String[] {"A1", "A2", "A3", "A4"}; 
    String[] questions = new String[] {"Q1", "Q2", "Q3", "Your score: "}; 
    int response = -2; //-2 because I'm not sure what value does response has, -1 or 3 on the last option 
    int i = 0; 
    int score = 0; 
    String message = ""; 
    public DialogExamples() { 
     do { 
      message = i < 3 ? questions[i] : questions[i] + score; 
      while (response != 0) { //Correct answer is A1 
       response = JOptionPane.showOptionDialog(null, message, "Title", 
        JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, 
        null, answers, answers[0]); 
      } 
      i++; 
      score++; //Add your logic 
      response = -2; 
     } while (i < questions.length); //i = number of questions 
    } 

    public static void main (String args[]) { 
     DialogExamples de = new DialogExamples(); 
    } 
} 

は、これはあなたにこれらのもののような出力が得られます、そして、あなたはあなたのコードに合わせて、ちょうど検証を追加(でも最後のダイアログのボタンに答える追加私のコードでエラーを取り除くためにそれを編集する必要がある場合がありますしかし、私はあなたにそのアイデアを与えているので、残りのことはあなた次第です)。

第一と最後のダイアログ

enter image description hereenter image description here

+0

ありがとうございました! – SassyRegards201

+0

答えがあなたの質問を解決するなら、助けてくれてうれしいです[それを受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Frakcool

+0

申し訳ありません新しいスタックオーバーフロー。昨日私の口座を持ってきました。私はこのサイトの使い方を知らない。 – SassyRegards201

関連する問題