使用GUI进行Java测验

时间:2014-12-08 21:10:01

标签: java user-interface service

嘿,我正在尝试为我的英语课圣诞派对建立一个测验计划。它有一个GUI,但除此之外并不重要。我有三个按钮,每个按钮都带有答案A,B或C的标签。 我有一个Button Go,可以填充数组中的第一个问题。所有其他问题也是数组中的存储,但每个都存在于不同的存储中。他们被命名为frage 1-10。它们包含问题三个可能的答案和一个字符串,告诉程序哪一个是正确的答案。我需要一个名为nextQuestion的服务,它将下一个数组填入相应的字段中。我为这项服务而苦苦挣扎,因为我想不出任何办法。我将在这里发布我的源代码,希望你能帮助我。因为我是德国人,所以代码包含多语言部分。如果您正在努力理解,请不要犹豫,我会尽力解释我的简历代码。 我提前感谢您的支持。

import sum.komponenten.*;
import sum.werkzeuge.*;
import sum.ereignis.*;

public class DasQuiz extends EBAnwendung
{
    // Objekte

private Etikett hatEtikettHeader;

private Knopf hatKnopfAnswerA;

private Knopf hatKnopfExit;

private Knopf hatKnopfAnswerB;

private Knopf hatKnopfAnswerC;

private Zeichenbereich hatZeichenbereichQuestion;

private Etikett hatEtikett2;

private Etikett hatEtikett3;

private Etikett hatEtikett4;

private Etikett hatEtikettTeamOne;

private Etikett hatEtikettTemaTwo;

private Etikett hatEtikettPunkte1;

private Etikett hatEtikettPunkte2;

private Knopf hatKnopfGo;

private String[] frage1 = new String[]{"What is traditionally hidden in a Christmas pudding?", "A Coin", "A Watch", "A pair of dice", "A"};

private String[] frage2 = new String[]{"How many days are there on a traditional advent calendar?", "12", "24", "30", "B"};

private String[] frage3 = new String[]{"____pull Santa's sleigh", "Guniea Pigs", "Cats", "Reindeers", "C"};

private String[] frage4 = new String[]{"According to the song, how many days of Christmas are there?", "11", "12", "13", "B"};

private String[] frage5 = new String[]{"Why do we shorten Christmas to Xmas?", "X is the first letter of the Greek word for Christ", "X looks like a snowflake", "X looks like a star", "A"};

private String[] frage6 = new String[]{"What is the last day of Christmas called?", "Advent", "Twelfth Night", "Boxing Day", "B"};

private String[] frage7 = new String[]{"Are used to make traditional Christingles", "Peaches", "Pears", "Oranges", "C"};

private String[] frage8 = new String[]{"Charles _____ wrote the book A Christmas Carol", "Dahl", "Rowling", "Dickens", "C"};  

private String[] frage9 = new String[]{"Which royal couple started off the fashion for Christmas trees in Britain?", "King Henry adn Anne Boleyn", "Queen Victoria adn Prince Albert", "Prince William and kate Middleton", "B"};

private String[] frage10 = new String[]{"Which of these plants is traditionally connected with Christmas?", "Daisy", "Daffodil", "Poinsettia", "C"};

StringBuilder builder = new StringBuilder();


// Attribute
/**
 * Konstruktor
 */
public DasQuiz()
{
    //Initialisierung der Oberklasse
    super(1255, 876);

    hatEtikettHeader = new Etikett(468, 57, 225, 25, "Christmas Quiz LK English by Marc Blaesche");
    // Ausrichtung
    hatEtikettHeader.setzeAusrichtung(Ausrichtung.LINKS);
    hatKnopfAnswerA = new Knopf(289, 472, 100, 25, "Answer A");
    hatKnopfAnswerA.setzeBearbeiterGeklickt("hatSchalterAnswerAGeklickt");
    hatKnopfExit = new Knopf(1078, 810, 100, 25, "Exit");
    hatKnopfExit.setzeBearbeiterGeklickt("hatKnopfExitGeklickt");
    hatKnopfAnswerB = new Knopf(514, 472, 100, 25, "Answer B");
    hatKnopfAnswerB.setzeBearbeiterGeklickt("hatSchalterAnswerBGeklickt");
    hatKnopfGo = new Knopf (514, 397, 100, 25, "GOGO");
    hatKnopfGo.setzeBearbeiterGeklickt("hatKnopfGoGeklickt");
    hatKnopfAnswerC = new Knopf(755, 472, 100, 25, "Answer C");
    hatKnopfAnswerC.setzeBearbeiterGeklickt("hatSchalterAnswerCGeklickt");
    hatZeichenbereichQuestion = new Zeichenbereich(288, 143, 566, 143, "");
    hatEtikett2 = new Etikett(289, 300, 566, 25, "");
    // Ausrichtung
    hatEtikett2.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikett3 = new Etikett(289, 340, 566, 25, "");
    // Ausrichtung
    hatEtikett3.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikett4 = new Etikett(289, 380, 566, 25, "");
    // Ausrichtung
    hatEtikett4.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettTeamOne = new Etikett(72, 585, 100, 25, "Team One");
    // Ausrichtung
    hatEtikettTeamOne.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettTemaTwo = new Etikett(356, 586, 100, 25, "Tema Two");
    // Ausrichtung
    hatEtikettTemaTwo.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettPunkte1 = new Etikett(72, 671, 100, 141, "");
    // Ausrichtung
    hatEtikettPunkte1.setzeAusrichtung(Ausrichtung.LINKS);
    hatEtikettPunkte2 = new Etikett(355, 669, 96, 141, "");
    // Ausrichtung
    hatEtikettPunkte2.setzeAusrichtung(Ausrichtung.LINKS);
}


public void hatKnopfAnswerAGeklickt()
{

}

public void hatKnopfExitGeklickt()
{
    System.exit(0);
}


public void hatKnopfAnswerBGeklickt()
{
    //    Schreiben Sie hier den Text ihres Dienstes
}

public void hatKnopfAnswerCGeklickt()
{
    //    Schreiben Sie hier den Text ihres Dienstes
}

    public void hatKnopfGoGeklickt()
{
    hatZeichenbereichQuestion.setzeInhalt(frage1[0]);
    hatEtikett2.setzeInhalt(frage1[1]);
    hatEtikett3.setzeInhalt(frage1[2]);
    hatEtikett4.setzeInhalt(frage1[3]);
}

public void nextQuestion()
{

}

}

1 个答案:

答案 0 :(得分:2)

Anupam在评论中说的是正确的;我相信最简单/最快捷的方法是将您的frage数组合并到一个二维数组中,您可以迭代它以获得下一个问题。

private String[][] questions = {frage1, frage2, frage3, frage4, frage5, frage6, frage7}

此外,您的代码需要知道哪个问题是“下一个问题”。有几种方法可以解决这个问题,但是由于我们处理数组,一种方法是维护一个“索引”值,如下所示:

public class DasQuiz extends EBAnwendung {

    private int currentQuestionIndex = 0;
    ...

然后,您的nextQuestion方法只是使用该值来确定下一个要加载的问题

例如:

public void nextQuestion() {
    String[] currentQuestion = questions[currentQuestionIndex];

    hatZeichenbereichQuestion.setzeInhalt(currentQuestion[0]);
    hatEtikett2.setzeInhalt(currentQuestion[1]);
    hatEtikett3.setzeInhalt(currentQuestion[2]);
    hatEtikett4.setzeInhalt(currentQuestion[3]);

    currentQuestionIndex++; // increment to the next question index
}

此外,您的hatKnopfGoGeklickt方法可以简单地使用nextQuestion,而不是自己完成工作:

public void hatKnopfGoGeklickt() {
    nextQuestion();
}

附注#1:请注意,我没有检查nextQuestion中是否有任何数组越界问题,因为我不确定程序在到达时是如何工作的问题的结尾(也许很明显,不确定,因为我的德语有点生锈)。

附注2:如果您创建一个代表问题及其相应答案的类,您可能会发现您的代码更清晰。

<强>更新

关于你在评论中所说的关于不确定如何创建新课程的内容,这样的事情会很简单:

public class Question { // Frage
    private String questionText;
    private String[] answers;
    private String correctOption;

    public Question(String questionText, String[] answers, String correctOption){
       ...
    }
}