0

What I want is to add a question with 3-4 options to the 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.
       }
    }
 }
Frakcool
  • 10,915
  • 9
  • 50
  • 89
  • And what is your question? – FredK Mar 30 '16 at 19:40
  • so i really want to know how to display a multiple choice question in the dialog that i created and when they press on the button i want to them to be able to answer the question when they answer it it will say either yes or not true or false then go to the next one. basically incooperate the class examples into the swing. sorry not so clear. – SassyRegards201 Mar 30 '16 at 19:43
  • Your question has a LOT of code, your specific question is to have a `JDialog` with more than 3 options? – Frakcool Mar 30 '16 at 19:50
  • so i have the Jdialog add a mutiple chioce question to the Jdialog that can be functional. – SassyRegards201 Mar 30 '16 at 19:55
  • what i want is add a question with 3-4 options to the jdialog. – SassyRegards201 Mar 30 '16 at 19:56
  • Perhaps something like [this](http://stackoverflow.com/questions/30925564/why-is-my-jlabel-not-showing-up/30926625#30926625) – MadProgrammer Mar 30 '16 at 20:57

1 Answers1

1

This is a way to get what you want, you can take this idea and do something like this with a CardLayout and a JFrame. You're asking for JDialogs so I made an example with them:

This example is called a Minimal Complete and Verifiable Example (MCVE) or Runnable Example or a Short, Self Contained, Correct Example (SSCCE) and you should provide something like this on your following questions. I'd also recommend you to take the tour and learn How to ask a good question.

You should also check Making a JOptionPane with 4 options, I also used a ternary operator and you should also read How to make Dialogs, so you can add more complex GUI into them, such as those buttons and a JTextField and images, etc., like: this one or this one or this one, just use Google or the search tool bar on the right top corner of this site.

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

This will give you an output similar to these ones, and you might have to edit it to fit your code and remove an error on my code which adds answer buttons even on the last dialog (just add a validation, but I'm only giving you the idea, so it's up to you to do the rest).

The 1st and last dialogs

enter image description here enter image description here

Community
  • 1
  • 1
Frakcool
  • 10,915
  • 9
  • 50
  • 89
  • Glad it helped, if the answer solves your question, be sure to [accept it](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Frakcool Mar 31 '16 at 02:43
  • Sorry bud im new to stack overflow. just got my account yesterday. i dont know how to use this site. – SassyRegards201 Mar 31 '16 at 05:05
  • @SassyRegards201 I left some useful links on the answer: How to ask a good question / tour / MCVE, read them to start learning how Stack Overflow works – Frakcool Mar 31 '16 at 16:43