Problem mit Action Listener

Status
Nicht offen für weitere Antworten.

simon_m

Mitglied
Hallo.
Ich hab jetzt noch ein anderes Problem :(

Code:
// Created on 22.07.2005

package s_moeller.rechenspiel;

import javax.swing.*;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;

//import java.awt.event.*;

public class Hauptfenster extends JFrame {

	// Instanzvariablen
	private JLabel zahl1, zahl2, punkteAnzeige, lebenAnzeige, operator;

	private double erg, ergEingabe;

	private int z1, z2, zz, punkte, leben, operatorZ;

	private JPanel aufgabe, status;

	private JTextField ergebnis;

	private String SLeben, SPunkte;

	private JButton ok;

	// Konstruktor
	public Hauptfenster() {
		super("Rechenspiel");

		// Leben und Punkte bei Start festlegen
		leben = 3;
		punkte = 0;

		// nur zum Test
		zz = 10;

		// Layout
		this.getContentPane().setLayout(new GridLayout(2, 1));

		//		 Aufabau des Aufgaben-Panels
		zahl1 = new JLabel();
		zahl2 = new JLabel();
		operator = new JLabel();
		ok = new JButton("OK");
		ergebnis = new JTextField("0");

		ok.setMnemonic(KeyEvent.VK_ESCAPE);
// Hier ist der Fehler:
                	ok.addActionListener(new KnopfAktion());  // <------ hier kommt:
                                                    //KnopfAktion can not be resolved

		aufgabe = new JPanel();
		aufgabe.setBackground(new Color(0, 200, 0));

		aufgabe.add(zahl1);
		aufgabe.add(operator);
		aufgabe.add(zahl2);
		aufgabe.add(ergebnis);
		aufgabe.add(ok);
		aufgabe.setLayout(new GridLayout(1, 5, 10, 10));

		// Aufbau des Status Panles
		lebenAnzeige = new JLabel("Leben: " + SLeben);
		punkteAnzeige = new JLabel("Punkte: " + SPunkte);

		status = new JPanel();
		status.setLayout(new GridLayout(1, 2, 10, 10));

		status.add(lebenAnzeige);
		status.add(punkteAnzeige);

		// Zusammensetzen der Content-Pane
		this.getContentPane().add(status);
		this.getContentPane().add(aufgabe);

		// Fenster schliessen
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Das eigentliche Spiel in einer if-Schleife

		if (leben > 0) {
			//		 Generieren der Zahlen
			z1 = (int) Math.round(Math.random() * zz);
			z2 = (int) Math.round(Math.random() * zz);
			zahl1.setText(Integer.toString(z1));
			zahl2.setText(Integer.toString(z2));

			//		 Eingabe zu Zahl wandeln

			ergEingabe = Double.parseDouble(ergebnis.getText());

			// Generieren der Operatoren-Zahl für die if-Abfrage
			operatorZ = (int) Math.round(Math.random() * 2);

			// Generieren des Rechenzeichens und Ausrechnen des Ergebnisses
			if (operatorZ == 0) {
				operator.setText("+");
				erg = z1 + z2;
			}
			if (operatorZ == 1) {
				operator.setText("-");
				erg = z1 - z2;
			}
			if (operatorZ == 2) {
				operator.setText("*");
				erg = z1 * z2;
			}
			if (operatorZ == 3) {
				operator.setText(":");
				if (z2 == 0) {
					z2++;
				}
				erg = z1 / z2;
			}

			// Überprüfen des Ergebnisses und Konsequenzen ziehen
			class KnopfAktion implements ActionListener {
				public void actionPerformed(ActionEvent e) {

					if (e.getActionCommand() == ok.getText()) {

						if (ergEingabe == erg) {
							punkte++;
						} else {
							leben--;
						}
					}
				}
			}

			// Punkte und Leben in Strings umwandeln
			SLeben = Integer.toString(leben);
			SPunkte = Integer.toString(punkte);

			// Aktualisieren der Status-Leiste
			lebenAnzeige.setText("Leben: " + SLeben);
			punkteAnzeige.setText("Punkte: " + SPunkte);
		}
	}
}

zuerst dachte ich, dass es an der if-Abfrage liegt, die die Klasse KnopfAktion umfasst. Aber auch, wenn man diese entfernt, bleibt der Fehler.
Schon mal Danke
mfg
Simon
 

simon_m

Mitglied
Ansich ist die Idee nicht schlecht.
Der Fehler verschwindet auch. Allerdings muss das Ergebnis ja immer wieder überprüft werden. Die Klasse KnopfAktion muss also innerhalb der if-Schleife stehen. Es wäre aber sinnlos den Button immer wieder neu zu erstellen. Hat jemand eine Idee????
 

mic_checker

Top Contributor
du hast den code von knopfAktion ausgelagert, wie von Roar gesagt.

Aber wo genau ist dein Problem ? Du greifst halt immer auf die aktuellen Werte zu.....die Klasse muss dann nicht wie oben innerhalb von deiner if schleife stehen...
 

simon_m

Mitglied
Eigentlich müsstest du Recht haben. Es funktioniert aber immer noch nicht richtig.
Ich hab es jetzt so gemacht:
Code:
// Created on 22.07.2005

package s_moeller.rechenspiel;

// author Simon Möller

import javax.swing.*;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;

//import java.awt.event.*;

public class Hauptfenster extends JFrame {

	// Instanzvariablen
	private JLabel zahl1, zahl2, punkteAnzeige, lebenAnzeige, operator;

	private double erg, ergEingabe;

	private int z1, z2, zz, punkte, leben, operatorZ;

	private JPanel aufgabe, status;

	private JTextField ergebnis;

	private String SLeben, SPunkte;

	private JButton ok;

                    // Überprüfen des Ergebnisses und Konsequenzen ziehen
			class KnopfAktion implements ActionListener {
				public void actionPerformed(ActionEvent e) {

					if (e.getActionCommand() == ok.getText()) {

						if (ergEingabe == erg) {
							punkte++;
						} else {
							leben--;
						}
					}
				}
			}	

        // Konstruktor
	public Hauptfenster() {
		super("Rechenspiel");

		// Leben und Punkte bei Start festlegen
		leben = 3;
		punkte = 0;

		// nur zum Test
		zz = 10;

		// Layout
		this.getContentPane().setLayout(new GridLayout(2, 1));

		//		 Aufabau des Aufgaben-Panels
		zahl1 = new JLabel();
		zahl2 = new JLabel();
		operator = new JLabel();
		ok = new JButton("OK");
		ergebnis = new JTextField("0");

		ok.setMnemonic(KeyEvent.VK_ESCAPE);
		ok.addActionListener(new KnopfAktion());

		aufgabe = new JPanel();
		aufgabe.setBackground(new Color(0, 200, 0));

		aufgabe.add(zahl1);
		aufgabe.add(operator);
		aufgabe.add(zahl2);
		aufgabe.add(ergebnis);
		aufgabe.add(ok);
		aufgabe.setLayout(new GridLayout(1, 5, 10, 10));

		// Aufbau des Status Panles
		lebenAnzeige = new JLabel("Leben: " + SLeben);
		punkteAnzeige = new JLabel("Punkte: " + SPunkte);

		status = new JPanel();
		status.setLayout(new GridLayout(1, 2, 10, 10));

		status.add(lebenAnzeige);
		status.add(punkteAnzeige);

		// Zusammensetzen der Content-Pane
		this.getContentPane().add(status);
		this.getContentPane().add(aufgabe);

		// Fenster schliessen
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Das eigentliche Spiel in einer if-Schleife

		if (leben > 0) {
			//		 Generieren der Zahlen
			z1 = (int) Math.round(Math.random() * zz);
			z2 = (int) Math.round(Math.random() * zz);
			zahl1.setText(Integer.toString(z1));
			zahl2.setText(Integer.toString(z2));

			//		 Eingabe zu Zahl wandeln

			ergEingabe = Double.parseDouble(ergebnis.getText());

			// Generieren der Operatoren-Zahl für die if-Abfrage
			operatorZ = (int) Math.round(Math.random() * 2);

			// Generieren des Rechenzeichens und Ausrechnen des Ergebnisses
			if (operatorZ == 0) {
				operator.setText("+");
				erg = z1 + z2;
			}
			if (operatorZ == 1) {
				operator.setText("-");
				erg = z1 - z2;
			}
			if (operatorZ == 2) {
				operator.setText("*");
				erg = z1 * z2;
			}
			if (operatorZ == 3) {
				operator.setText(":");
				if (z2 == 0) {
					z2++;
				}
				erg = z1 / z2;
			}

			

			// Punkte und Leben in Strings umwandeln
			SLeben = Integer.toString(leben);
			SPunkte = Integer.toString(punkte);

			// Aktualisieren der Status-Leiste
			lebenAnzeige.setText("Leben: " + SLeben);
			punkteAnzeige.setText("Punkte: " + SPunkte);
		}
	}
}
 

mic_checker

Top Contributor
nein, die klasse gehört ausserhalb:

Code:
import javax.swing.*;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;

//import java.awt.event.*;

public class Hauptfenster extends JFrame {
.......
   // Konstruktor
   public Hauptfenster() { 
   }
....
class KnopfAktion implements ActionListener { 
....
}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D problem mit einem action Java Basics - Anfänger-Themen 6
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
J Problem bei Umrechnung von Hex in Bin Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben