向对话框添加多个选择并使其起作用 [英] Add multiple choice to Dialog and make it functioning

查看:56
本文介绍了向对话框添加多个选择并使其起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要在 JDialog

中添加一个带有3-4个选项的问题导入java.awt。*; 
import java.awt.event。*;
import javax.swing。*;

公共类VocabHelper {

私有JFrame mainFrame;

私人JPanel mainPanel;

私人JPanel animalPanel;

public JDialog animalDialog;

私人JLabel标题Lbl;

私人JLabel字幕;


//调用主GUI

public VocabHelper(){

mainGUI();
}

//主方法

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

//编辑mainGUI

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


/ * titleLbl = new JLabel( Vocab Helper,JLabel.CENTER);
字幕= new JLabel(选择类别继续,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);
}

//创建quizGUI

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

addQuizEvent();
}

//添加按钮和监听器

public void showActionEvents(){

JButton quizButton = new JButton( quiz );
JButton BiologyButton =新的JButton( Biology);
JButton geologyButton = new JButton( Geology);
JButton historyButton = new JButton( H​​istory);
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);
}
//将事件添加到测验对话框中,这是我要在下面创建类的选择题的地方。

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

//按下按钮测验时,打开对话框

私有类ButtonClickListener实现ActionListener {
public void actionPerformed(ActionEvent e){
字符串命令= e.getActionCommand();
if(command.equals( Quiz)){
quizGUI();
}
}
}
}

//选择器的类测试器,我认为这是对话框中的内容,我只是不知道如何。

公共类QuizTester
{
public static void main(String [] args)
{

//选择题
ChoiceQuestion second = new ChoiceQuestion();
second.setText( Java的发明者出生在哪个国家?);
second.addChoice( Australia,false);
second.addChoice( Canada,true);
second.addChoice( Denmark,false);
second.addChoice( United States,false);

//创建测验并将问题添加到测验中,然后显示测验
测验q = new Quiz();
q.addQuestion(second);
q.presentQuestions();
}
}

//用于选择逻辑的新类

import java.util.ArrayList;

/ **
多项选择题。
* /

公共类ChoiceQuestion {
private ArrayList< String>选择;

/ **
构造选择题。
* /

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

/ **
为此问题添加答案选择。
@param choice添加
@param的选择正确如果这是正确的选择,则为true,否则为false。
* /

public void addChoice(String choice,boolean正确)
{
choices.add(choice);
if(正确)
{
//将choices.size()转换为字符串
字符串choiceString = + choices.size();
setAnswer(choiceString);
}
}

public void display()
{
//显示问题文本
super.display();
//显示答案选择
用于(int i = 0; i< choices.size(); i ++)
{
int choiceNumber = i + 1;
System.out.println(choiceNumber +: + choices.get(i));
}
}
}

//创建测验的测验类。

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

/ **
测验包含问题列表。
* /

公共类测验
{
private ArrayList< Question>问题;

/ **
毫无疑问地进行测验。
* /

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

/ **
在此测验中添加问题。
@param q问题
* /

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

/ **
向用户显示问题并检查响应。
* /

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

用于(问题q:问题)
{
q.display();
System.out.print(您的答案:);
字符串响应= in.nextLine();
System.out.println(q.checkAnswer(response)); \
//在此处显示此问题,但在对话框中并带有可以单击的气泡。
}
}
}


解决方案

这是获得所需内容的一种方法,您可以采用这种想法并做类似


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.
       }
    }
 }

解决方案

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

这篇关于向对话框添加多个选择并使其起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆