Hi,
habe ein kleines Problem. Ich habe eine class Main in der verschiedene Listener usw. für Ereignise definiert sind. Außerdem werden Zufallszahlen generiert, die ich im Konstruktor Main in einem Panel ausgebe. In dem TextField erg wird ein Ergebnis eingegeben und mit Enter wird dann keyPressed(KeyEvent e) aufgerufen und das ergebnis wird getestet. Wenn es richtig ist, wird im TextField test Richtig angezeigt. Nun will ich die Prozedur aber öfter wiederholen sprich, wenn das Ergebnis richtig ist, sollen neue Zahlen erzeugt werden usw. es soll immer weiter laufen mit neuen Aufgaben.
Jetzt das Problem, wie kann ich das erreichen, dass ich immer wieder neue Zahlen = Aufgaben bekomme? Ich kann ja nicht in keyPressed wieder KeyPressed aufrufen und wenn ich eine eigene Methode definiere für die Erzeugung geht es auch nicht, weil dann aus dem Konstruktor wieder nich auf die Zahlen zugegriffen werden kann. Hab schon alles versucht!
Die Erzeugung der Zahlen muss in class Main bleiben, weil ich sonst im Konstruktor Main nicht mehr drauf zu greifen kann. Wie kann man das lösen?
Danke für eure Hilfe!
habe ein kleines Problem. Ich habe eine class Main in der verschiedene Listener usw. für Ereignise definiert sind. Außerdem werden Zufallszahlen generiert, die ich im Konstruktor Main in einem Panel ausgebe. In dem TextField erg wird ein Ergebnis eingegeben und mit Enter wird dann keyPressed(KeyEvent e) aufgerufen und das ergebnis wird getestet. Wenn es richtig ist, wird im TextField test Richtig angezeigt. Nun will ich die Prozedur aber öfter wiederholen sprich, wenn das Ergebnis richtig ist, sollen neue Zahlen erzeugt werden usw. es soll immer weiter laufen mit neuen Aufgaben.
Jetzt das Problem, wie kann ich das erreichen, dass ich immer wieder neue Zahlen = Aufgaben bekomme? Ich kann ja nicht in keyPressed wieder KeyPressed aufrufen und wenn ich eine eigene Methode definiere für die Erzeugung geht es auch nicht, weil dann aus dem Konstruktor wieder nich auf die Zahlen zugegriffen werden kann. Hab schon alles versucht!
Die Erzeugung der Zahlen muss in class Main bleiben, weil ich sonst im Konstruktor Main nicht mehr drauf zu greifen kann. Wie kann man das lösen?
Code:
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
Random generator = new Random();
int zahl1 = generator.nextInt(30);
int zahl2 = generator.nextInt(30);
...
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
int ergebnis = zahl1+zahl2;
int ergein = Integer.parseInt(erg.getText());
if(ergebnis == ergein) {
test.setText("Richtig");
}
else {
test.setText("Falsch");
}
}
}
...
Main (String titel) {
super(titel);
...
//Panel für Aufgabe und Eingabe
JPanel eingabe = new JPanel();
aufgabe = new JLabel(zahl1 + " + " + zahl2 + " = ");
erg = new JTextField(4);
test = new JTextField(10);
//Layout Manager für Panel eingabe
eingabe.setLayout(new FlowLayout());
//Elemente zu Panel eingabe hinzufügen
eingabe.add(aufgabe);
eingabe.add(erg);
eingabe.add(test);
test.getText();
...
erg.addKeyListener(new Ergebnis());
}
private JLabel aufgabe;
private JTextField erg;
private JTextField test;
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Main Window = new Main("Jetzt lerne ich Mathe");
Window.setSize(400,200);
Window.show();
}
}
Danke für eure Hilfe!