Hallo.
Ich hab jetzt noch ein anderes Problem
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
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