Auf Thema antworten

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]



Oben