Viel hab ich jetzt nicht geändert, nur die GUI erstellung in die init() verschoben.
Wie gesagt, das Einlesen solltest du auch nur am Anfang einmal machen.
[code=Java] for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
Antworten = Zeile;
}[/code]
Das macht auch keinen Sinn, damit überschreibst du dir immer die aktuelle Antwort.
[code=Java]
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Quiz extends JApplet implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
// Attribute
private JLabel Fragen;
private JButton Knopf1;
private JButton Knopf2;
private JButton Knopf3;
private JButton Knopf4;
private String Frage = "Fehler";
private String A = "Fehler";
private String B = "Fehler";
private String C = "Fehler";
private String D = "Fehler";
private String Antworten = "Fehler";
int P;
private int MAX = 5;
@Override
public void init() {
// Layout
JPanel Platte = new JPanel();
Platte.setLayout(new GridLayout(2, 2));
JPanel Platte2 = new JPanel();
Platte2.setLayout(new GridLayout(2, 1));
JPanel Platte3 = new JPanel();
Platte3.setLayout(new GridLayout(2, 1));
Platte2.setBackground(new Color(209, 220, 255));
// Buttons, Textfeld erzeugen
Fragen = new JLabel(Frage);
Fragen.setFont(new Font("Arial", Font.PLAIN, (int) (25)));
Fragen.setHorizontalAlignment(JLabel.CENTER);
Fragen.setVerticalAlignment(JLabel.CENTER);
Knopf1 = new JButton("a) " + A);
Knopf2 = new JButton("b) " + B);
Knopf3 = new JButton("c) " + C);
Knopf4 = new JButton("d) " + D);
// Buttons mit Ereignissen verknüpfen
Knopf1.addActionListener(this);
Knopf2.addActionListener(this);
Knopf3.addActionListener(this);
Knopf4.addActionListener(this);
JLabel Bild = new JLabel(new ImageIcon("quiz.gif"));
// Alles einsetzen
Platte2.add(Bild);
Platte2.add(Fragen);
Platte.add(Knopf1);
Platte.add(Knopf2);
Platte.add(Knopf3);
Platte.add(Knopf4);
Platte3.add(Platte2);
Platte3.add(Platte);
setContentPane(Platte3);
// read data
read();
}
// Dateien öffnen, auslesen, speichern
public void read() {
int z = (int) (Math.random() * MAX + 1);
try {
BufferedReader Datei = new BufferedReader(new FileReader(
"Fragen.txt"));
for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
Frage = Zeile;
}
Datei.close();
} catch (IOException x) {
Frage = "Fehler";
}
try {
BufferedReader Datei = new BufferedReader(new FileReader("A.txt"));
for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
A = Zeile;
}
Datei.close();
} catch (IOException x) {
A = "Fehler";
}
try {
BufferedReader Datei = new BufferedReader(new FileReader("B.txt"));
for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
B = Zeile;
}
Datei.close();
} catch (IOException x) {
B = "Fehler";
}
try {
BufferedReader Datei = new BufferedReader(new FileReader("C.txt"));
for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
C = Zeile;
}
Datei.close();
} catch (IOException x) {
C = "Fehler";
}
try {
BufferedReader Datei = new BufferedReader(new FileReader("D.txt"));
for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
D = Zeile;
}
Datei.close();
} catch (IOException x) {
D = "Fehler";
}
try {
BufferedReader Datei = new BufferedReader(new FileReader(
"Antworten.txt"));
for (int i = 0; i < z; i++) {
String Zeile = Datei.readLine();
Antworten = Zeile;
}
Datei.close();
} catch (IOException x) {
Antworten = "Fehler";
}
}
/*
* (non-Javadoc)
*
* @see
* java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent Ereignis) {
Object Quelle = Ereignis.getSource();
if (Quelle == Knopf1 && Antworten.equals("A")) {
P++;
JOptionPane.showMessageDialog(null, "A ist richtig! Punkte: " + P);
} else if (Quelle == Knopf2 && Antworten.equals("B")) {
P++;
JOptionPane.showMessageDialog(null, "B ist richtig! Punkte: " + P);
} else if (Quelle == Knopf3 && Antworten.equals("C")) {
P++;
JOptionPane.showMessageDialog(null, "C ist richtig! Punkte: " + P);
} else if (Quelle == Knopf4 && Antworten.equals("D")) {
P++;
JOptionPane.showMessageDialog(null, "D ist richtig! Punkte: " + P);
} else {
P--;
JOptionPane.showMessageDialog(null, "Falsch! Richtig ist "
+ Antworten + "! Punkte: " + P);
}
read();
}
}[/code]