2016-03-30 6 views
0

Was ich will, ist eine Frage mit 3-4 Optionen zum JDialogMultiple-Choice zu Dialog hinzufügen und machen es funktioniert

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

Und was ist Ihre Frage? – FredK

+0

also ich möchte wirklich wissen, wie man eine Multiple-Choice-Frage in dem Dialog, den ich erstellt habe, anzeigt und wenn sie auf den Knopf drücken, den ich möchte, dass sie die Frage beantworten können, wenn sie sie beantworten, wird sie entweder Ja oder nicht wahr sagen oder falsch, dann gehe zum nächsten. im Grunde die Klassenbeispiele in den Schwung einbeziehen. Entschuldigung, nicht so klar. – SassyRegards201

+0

Ihre Frage hat eine Menge Code, Ihre spezifische Frage ist, einen 'JDialog' mit mehr als 3 Optionen zu haben? – Frakcool

Antwort

1

Dies ist ein Weg, um hinzuzufügen, zu bekommen, was Sie wollen, können Sie diese Idee nehmen und etwas wie this mit einem CardLayout und einem JFrame tun. Sie fragen nach JDialog s so machte ich ein Beispiel mit ihnen:

Dieses Beispiel ein Minimal Complete and Verifiable Example (MCVE) oder Runnable Beispiel oder ein Short, Self Contained, Correct Example (SSCCE) genannt wird und man sollte so etwas wie dies auf folgende Fragen liefern. Ich würde dir auch empfehlen, die tour zu nehmen und How to ask a good question zu lernen.

Sie sollten auch Making a JOptionPane with 4 options überprüfen, habe ich auch eine ternary Operator und Sie sollten lesen Sie auch How to make Dialogs, so können Sie komplexere GUI in ihnen, wie diese Tasten und ein JTextField und Bilder, etc. verwenden, wie: this one oder this one oder this one, verwenden Sie einfach Google oder die Suchleiste in der rechten oberen Ecke dieser Website.

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

Dadurch erhalten Sie eine Ausgabe ähnlich wie diese hier, und Sie können sie bearbeiten müssen den Code passen und einen Fehler in meinem Code zu entfernen, die Tasten beantworten sogar auf dem letzten Dialog fügt (fügen Sie einfach eine Validierung , aber ich gebe dir nur die Idee, also liegt es an dir, den Rest zu machen).

Die erste und letzte Dialoge

enter image description hereenter image description here

+0

Vielen Dank! – SassyRegards201

+0

Froh, dass es geholfen hat, wenn die Antwort Ihre Frage löst, achten Sie darauf, [akzeptieren Sie] ( – Frakcool

+0

) Sorry, ich bin im neu zu stapeln Überlauf. habe gerade meinen Account gestern bekommen. Ich weiß nicht, wie man diese Seite benutzt. – SassyRegards201

Verwandte Themen