gpt4 book ai didi

java - 向对话框添加多项选择并使其正常运行

转载 作者:行者123 更新时间:2023-12-01 10:08:03 25 4
gpt4 key购买 nike

我想要的是向 JDialog 添加一个包含 3-4 个选项的问题

    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 的事情与 CardLayout和一个 JFrame。您需要 JDialog,因此我用它们做了一个示例:

此示例称为 Minimal Complete and Verifiable Example (MCVE)或可运行示例或 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 onethis onethis 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();
}
}

这将为您提供与这些类似的输出,您可能需要对其进行编辑以适合您的代码并删除我的代码中的错误,该错误甚至在最后一个对话框中添加了答案按钮(只需添加验证,但我'我只是给你一个想法,所以剩下的就由你来做)。

第一个和最后一个对话框

enter image description here enter image description here

关于java - 向对话框添加多项选择并使其正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com