Rechenprogramm mit Swing

TobiasE

Neues Mitglied
Hi, ich bin neu in der Java-Programmierung und will ein einfaches Rechenprogramm fürs große Einmaleins mit Swing Programmieren. Ich bin schon so weit gekommen, dass zwei Zufallszahlen ausgegeben werden mit einem Eingabefeld für das Ergebnis und einer Anzeige wie viele man schon richtig/falsch beantwortet hat. Bloß wenn man auf OK klickt passiert nichts, obwohl er das Ergebnis überprüfen und dementsprechend richtig/falsch um 1 erhöhen müsste. Es fehlt irgendwo eine Schleife aber ich hab keine Ahnung wo ich diese einsetzen soll. Kann auch sein, dass das was ich geschrieben hab der größte Müll ist und so gar nicht funktioniert 😀 Hier das Programm bisher:
Java:
package Rechenprogramm;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

	public class Programm extends JFrame {
		  JTextField m_eingabe;
		  JTextField m_zufallszahl1;
		  JTextField m_zufallszahl2;
		  JLabel m_rechenzeichen;
		  JLabel m_gleichzeichen;
		  JTextField m_richtig;
		  JTextField m_falsch;
		  JButton m_ok;
			  
		    int zahl1 = (int) (Math.random()*9)+1;
			int zahl2 = (int) (Math.random()*9)+10;
			int richtig = 0;
			int falsch = 0;
			int ergebnis = zahl1 * zahl2;
		    int eingabezahl = 0;
		  class actions implements ActionListener {
			  public void actionPerformed(ActionEvent e) {
              try {
            	  eingabezahl = Integer.parseInt(m_eingabe.getText());
            	  if(ergebnis == eingabezahl) {
            		  richtig++;
            	  }
            	  else {
            		  falsch++;
            	  }
              }
            	  catch(NumberFormatException ex){
                      System.out.println("Ergebnis ist keine Zahl");
                  }
              }
			  }
	
		Programm(String titel) {
			super(titel);
			
			
			m_eingabe = new JTextField("Ergebnis");
			m_zufallszahl1 = new JTextField(""+zahl1);
			m_zufallszahl1.setEditable(false);
			m_zufallszahl2 = new JTextField(""+zahl2);
			m_zufallszahl2.setEditable(false);
			m_rechenzeichen = new JLabel(" * ");
			m_gleichzeichen = new JLabel(" = ");
			m_richtig = new JTextField("Richtig :" +richtig);
			m_richtig.setEditable(false);
			m_richtig.setForeground(Color.green);
			m_richtig.setBackground(Color.white);
			m_falsch = new JTextField("Falsch:" +falsch);
			m_falsch.setEditable(false);
			m_falsch.setForeground(Color.red);
			m_falsch.setBackground(Color.white);
			m_ok = new JButton("OK");
			
			setLayout(new FlowLayout());
			add(m_zufallszahl1);
			add(m_rechenzeichen);
			add(m_zufallszahl2);
			add(m_gleichzeichen);
			add(m_eingabe);
			add(m_ok);
			add(m_richtig);
			add(m_falsch);
			
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			m_ok.addActionListener(new actions());
		}
		public static void main(String[] args) {
			Programm fenster = new Programm("Rechenprogramm");
			fenster.setSize(500,100);
			fenster.setVisible(true);
		}
	}

Vielen Dank im Voraus!
 
Java:
jButton1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        //hier code was gemacht werden soll wenn button gedrückt wirt
      }
    });
 
Ja und wie schreib ich da rein, dass er wieder von vorne anfangen soll wenn man auf ok klickt, aber trotzdem richtig/falsch hochzählt?
 
Erstmal müsstest du dazu deinem Ok Button ebenfalls einen Listener zuweisen , oder insofern du den Listener in der Klasse selbst implementiertst eine Anweisung dafür schreiben

ich hab das ganze jetzt nur fix überflogen 🙂

Java:
m_ok = new JButton("OK");
m_ok.addActionListener(new ActionListener(){

  @Override
   public void actionPerformed(ActionEvent event){
        
       // PSEUDO_CODE
       wenn(rechnung korrekt){
           m_richtig.setzeText(Text.mitInhaltVon(richtig++)); // zählt richtig +1 und zeigt es an
           leereAlleTextFelder(); // setText(""); Methode um alle TextFelder zu leeren.
       }
     
   }

});

[EDIT]
Die Methode zum leeren der TextFelder ist relativ einfach zu realisieren, du rufst einfach für jedes Textfeld, die
Code:
setText();
mit folgendem parameter auf
Code:
""
[/EDIT]
 
Zuletzt bearbeitet:

Zurück
Oben