問題描述
我想要的是在 JDialog
導入 java.awt.*;導入 java.awt.event.*;導入 javax.swing.*;公共類 VocabHelper {私有 JFrame 主框架;私人JPanel主面板;私人JPanel 動物面板;公共 JDialog 動物對話;私有 JLabel 標題Lbl;私人 JLabel 字幕;//調用主界面公共 VocabHelper() {主界面();}//主要方法公共靜態(tài)無效主要(字符串[]參數){VocabHelper vocabHelper = new VocabHelper();vocabHelper.showActionEvents();}//編輯主GUI私人無效mainGUI(){mainFrame = new JFrame("VocabHelper");mainFrame.setSize(500, 500);/*titleLbl = new JLabel("詞匯助手", JLabel.CENTER);subtitle = new JLabel("選擇一個類別繼續(xù)", JLabel.CENTER);mainFrame.add(titleLbl);mainFrame.add(副標題);*/mainFrame.addWindowListener(new WindowAdapter() {公共無效窗口關閉(窗口事件窗口事件){System.exit(0);}});主面板 = 新的 JPanel();mainFrame.add(mainPanel);mainFrame.setVisible(true);}//創(chuàng)建測驗GUI公共無效測驗GUI(){quizDialog = 新的 JDialog();quizDialog.setName("測驗 1");quizDialog.setSize(500,500);quizDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);quizDialog.setVisible(false);addQuizEvent();}//添加按鈕和監(jiān)聽器公共無效showActionEvents(){JButton quizButton = new JButton("quiz");JButton 生物學按鈕 = new JButton("生物學");JButton geologyButton = new JButton("地質");JButton historyButton = new JButton("History");JButton sportsButton = new JButton("Sports");JButton techButton = new JButton("技術");quizButton.setActionCommand("測驗");bioButton.setActionCommand("生物學");geologyButton.setActionCommand("地質");historyButton.setActionCommand("歷史");sportsButton.setActionCommand("運動");techButton.setActionCommand("技術");QuizButton.addActionListener(new ButtonClickListener());bioButton.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);}//將事件添加到測驗對話框這是我想在下面創(chuàng)建多項選擇題的地方.公共無效 addQuizEvent() {JButton nextButton = new JButton("Next");nextButton.setActionCommand("下一步");nextButton.addActionListener(new ButtonClickListener());quizDialog.add(nextButton);quizDialog.setVisible(true);}//當按下按鈕測驗時打開對話框私有類 ButtonClickListener 實現 ActionListener {公共無效actionPerformed(ActionEvent e){字符串命令 = e.getActionCommand();如果(command.equals(測驗")){測驗GUI();}}}}//多項選擇的類測試器我認為這是對話框中的內容,我只是不知道如何.公共類 QuizTester{公共靜態(tài)無效主要(字符串 [] 參數){//多選題ChoiceQuestion second = new ChoiceQuestion();second.setText("Java的發(fā)明者出生在哪個國家?");second.addChoice("澳大利亞", false);second.addChoice("加拿大", true);second.addChoice("丹麥", false);second.addChoice("美國", false);//創(chuàng)建測驗并將問題添加到測驗然后呈現測驗測驗 q = new Quiz();q.addQuestion(第二個);q.presentQuestions();}}//多選邏輯的新類導入 java.util.ArrayList;/**一個有多個選擇的問題.*/公共類選擇問題{私有數組列表<字符串>選擇;/**構造一個沒有選擇的選擇題.*/公共選擇問題(){選擇 = 新的 ArrayList<String>();}/**為這個問題添加一個答案選項.@param 選擇要添加的選擇@param correct 如果這是正確的選擇,則為 true,否則為 false*/public void addChoice(字符串選擇,布爾值正確){選擇.添加(選擇);如果(正確){//將choices.size() 轉換為字符串字符串choiceString = "" +choices.size();設置答案(選擇字符串);}}公共無效顯示(){//顯示問題文本超級顯示();//顯示答案選項for (int i = 0; i
這是一種得到你想要的東西的方法,你可以接受這個想法并做一些類似
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 JDialog
s 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
這篇關于向 Dialog 添加多項選擇并使其正常運行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!