Hallo, ich programmiere ein Karteikartenprogramm. Wenn ich nun Karteikarten abfragen will muss ich zunächst das Fach auswählen welches ich Lernen möchte, nach dem ich ein Fach ausgewählt habe, sollen die Auswahlmöglichkeiten ausgeblendet werden und es soll eine Zufällige Frage aus einer Text-Datei gelesen werden. Mit druck auf den Lösungs-Knopf wird die passende Lösung eingeblendet.
Jetzt aber zum Problem: Drückt man auf den "Nächste Frage" Knopf soll eine neue Frage aus der für das Fach angelegten Datei gelesen werden. Jedoch kommt es nicht so weit, dass das Programm den Knopf "Nächste Frage" ausführt. wo ist der Fehler in meinem Code?
[CODE lang="java" highlight="58-72"] if(e.getSource()== button_Fach_1)
{
//Setzt die Fächer Sichtbarkeit auf false
button_Fach_1.setVisible(false);
button_Fach_2.setVisible(false);
button_Fach_3.setVisible(false);
button_Fach_4.setVisible(false);
button_Fach_5.setVisible(false);
button_Fach_6.setVisible(false);
button_Fach_7.setVisible(false);
button_Fach_8.setVisible(false);
button_Fach_9.setVisible(false);
button_Fach_10.setVisible(false);
//Setzt die Labels und Knöpfe auf True
label_Frage.setVisible(true);
button_Loesung.setVisible(true);
button_Next.setVisible(true);
button_Richtig.setVisible(true);
button_Falsch.setVisible(true);
button_Statistik.setVisible(true);
//Ertellen einer ArrayListe, in welchem jede Zeile der Textdatei ein Element ist.
ArrayList<String> list = new ArrayList<String>();
int i = 0;
try {
Scanner s = new Scanner(new File("./saves\\AVR.txt"));
while (s.hasNextLine())
{
i++;
list.add(s.nextLine());
}
s.close();
}
catch(IOException e1)
{
e1.printStackTrace();
}
//Ermitteln einer Frage, da Fragen immer in ungeraden Zeilen stehen
int random;
do {
random = (int)(Math.random()*i);
}while(random %2 != 0);
//Zufällige Frage in Label schreiben
label_Frage.setText(list.get(random));
//Zugehörige Antwort in Label schreiben (aber noch visible(false)
label_Antwort.setText(list.get(random+1));
//Random aus liste entfernen damit die selbe Frage nicht 2x kommt
list.remove(random);
list.remove(random+1);
//Soll bei Druck des Knopfes Next eine neue Frage ins label schreiben und die Lösung wieder ausblenden
if(e.getSource()== button_Next)
{
int randomNext;
do {
randomNext = (int)(Math.random()*i);
}while(randomNext %2 != 0);
label_Frage.setText(list.get(randomNext));
label_Antwort.setText(list.get(randomNext+1));
list.remove(randomNext);
list.remove(randomNext+1);
label_Antwort.setVisible(false);
}
}[/CODE]
Jetzt aber zum Problem: Drückt man auf den "Nächste Frage" Knopf soll eine neue Frage aus der für das Fach angelegten Datei gelesen werden. Jedoch kommt es nicht so weit, dass das Programm den Knopf "Nächste Frage" ausführt. wo ist der Fehler in meinem Code?
[CODE lang="java" highlight="58-72"] if(e.getSource()== button_Fach_1)
{
//Setzt die Fächer Sichtbarkeit auf false
button_Fach_1.setVisible(false);
button_Fach_2.setVisible(false);
button_Fach_3.setVisible(false);
button_Fach_4.setVisible(false);
button_Fach_5.setVisible(false);
button_Fach_6.setVisible(false);
button_Fach_7.setVisible(false);
button_Fach_8.setVisible(false);
button_Fach_9.setVisible(false);
button_Fach_10.setVisible(false);
//Setzt die Labels und Knöpfe auf True
label_Frage.setVisible(true);
button_Loesung.setVisible(true);
button_Next.setVisible(true);
button_Richtig.setVisible(true);
button_Falsch.setVisible(true);
button_Statistik.setVisible(true);
//Ertellen einer ArrayListe, in welchem jede Zeile der Textdatei ein Element ist.
ArrayList<String> list = new ArrayList<String>();
int i = 0;
try {
Scanner s = new Scanner(new File("./saves\\AVR.txt"));
while (s.hasNextLine())
{
i++;
list.add(s.nextLine());
}
s.close();
}
catch(IOException e1)
{
e1.printStackTrace();
}
//Ermitteln einer Frage, da Fragen immer in ungeraden Zeilen stehen
int random;
do {
random = (int)(Math.random()*i);
}while(random %2 != 0);
//Zufällige Frage in Label schreiben
label_Frage.setText(list.get(random));
//Zugehörige Antwort in Label schreiben (aber noch visible(false)
label_Antwort.setText(list.get(random+1));
//Random aus liste entfernen damit die selbe Frage nicht 2x kommt
list.remove(random);
list.remove(random+1);
//Soll bei Druck des Knopfes Next eine neue Frage ins label schreiben und die Lösung wieder ausblenden
if(e.getSource()== button_Next)
{
int randomNext;
do {
randomNext = (int)(Math.random()*i);
}while(randomNext %2 != 0);
label_Frage.setText(list.get(randomNext));
label_Antwort.setText(list.get(randomNext+1));
list.remove(randomNext);
list.remove(randomNext+1);
label_Antwort.setVisible(false);
}
}[/CODE]
Zuletzt bearbeitet: