Java || Einmaleins-Programm # JTextfield mit Schleife einlesen

Guten Abend,
ich bin gerade dabei einen kleines 1x1 Trainer für meine kleine Schwester zu programmieren.

Ich habe eine Variable angelegt für die Anzahl der Wiederholungen und ein JTextfield, das mir per Enter-Taste die Eingabe einliest.
Das Programm soll wenn sie eine Frage beantwortet hat und entweder ein „Richtig“ oder „Falsch“ bekommen hat zur nächsten Aufgabe gehen.
Ich habe ein Problem dies in eine Schleife zu packen, vielleicht könnt ihr mir da weiter helfen. Mein Code, der entsprechenden Klasse, sieht derzeit so aus:

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class programm extends JFrame implements KeyListener
{
    static JFrame prog = new JFrame("spiel");

    public static void rechner(final int zahl)
    {

        try
        {
            prog.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File(
                "C:/Users/kim/Desktop/back.jpg")))));
        }
        catch (IOException e)
        {
            System.out.println("da ging was schief");

            e.printStackTrace();
        }
        final JTextField text = new JTextField();
        prog.add(text);

        text.setBounds(450, 600, 40, 40);
        text.setBorder(BorderFactory.createEmptyBorder());
        text.addKeyListener(null);

        text.setFont(new java.awt.Font("Book Antiqua", 0, 20));
        final JLabel schrift = new JLabel();

        schrift.setFont(new java.awt.Font("Book Antiqua", 0, 28));
        schrift.setForeground(Color.WHITE);
        schrift.setBounds(140, 100, 200, 20);

        text.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

                int y = (int) ((Math.random() * 10) + 1);

                String ergebnis;
                int erg = 0;
                int counter = einstellungen.getAnzahl();

                ergebnis = text.getText();

                erg = Integer.parseInt(ergebnis);
                if (counter > 0)
                {
                    schrift.setText("was ist " + zahl + " * " + y);

                    if (erg == zahl * y)
                    {
                        counter--;
                        schrift.setText("super");

                    }
                    else
                    {
                        schrift.setText("falsch");
                    }

                }

            }

        });

        prog.add(text);

        prog.pack();

        prog.setVisible(true);
        prog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        prog.setFocusable(true);
        prog.setLayout(null);

        prog.setVisible(true);

        schrift.setOpaque(false);
        prog.add(schrift);

    }

}

Mit freundlichen Grüßen,
blume :slight_smile:

PS: Hoffe das passt hier rein ins Thema.

Ich würde eine Klasse Aufgabe machen.
Und nach der Eingabe fragst du einfach ab ob die Aufgabe richtig gelöst wurde, wenn ja -> neue Aufgabe

Was heißt “zur nächsten Aufgabe gehen”? Beschreib’ das ganze vielleicht mal genauer…

„In eine Schleife packen“ ?
Im Sinne von:

  • i = counter
  • i solange runter zählen wie counter > 0
    ?
    Und innerhalb der for schleife musst du dann deinen random Wert setzen und die Aufgabe ausgeben und kontrollieren.

Das ganze sollte auch nicht in der actionPerformed Methode stattfinden. Mach am besten eine neue Klasse wie schon gesagt für Aufgabe.

PS:
Achte bitte auch darauf das Klassennamen gross geschrieben werden. Methoden und Variablen Namen klein (aber das hast du ja schon) :slight_smile: