我想要的是向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 :(得分:1)
这是一种获得所需内容的方式,您可以采用这个想法,并使用this和JFrame
执行CardLayout
之类的操作。你要求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运算符,您还应该阅读How to make Dialogs,这样您就可以在其中添加更复杂的GUI,例如这些按钮和JTextField
和图片等,例如:this one或this 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();
}
}
这将为您提供类似于这些的输出,您可能必须编辑它以适合您的代码并删除我的代码上的错误,即使在最后一个对话框上添加了答案按钮(只需添加验证,但我'我只给你这个想法,所以你可以做其余的事。)
第一个和最后一个对话框