Input/Output Buttonwerte vergleichen

CptK

Bekanntes Mitglied
Hallo,
ich habe folgende zwei Klassen:
Java:
package Addition;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import Frame.FragenAnzeige;
import Frame.FragenDesign;
import Level.AufgabeChange;
import MainMenu.MenuAddition;

public class Level1 implements ActionListener {
 
    public static int e;
    public static int Ergebnis, bn = 0;
 
    @Override
    public void actionPerformed(ActionEvent arg0) {
     
        System.out.println("Level 1");
        MenuAddition.ClearMenuAddition();
        FragenDesign.FragenDesignVisible();
        FragenAnzeige.visibleBar();
     
        AufgabeChange.NewTask(10);
     
        for(int i = 0; i < 10; i++) {
         
            for(int x = 0; x < 4; x++) {
                FragenDesign.Antworten[x].addActionListener(new ActionListener() {
                 
                    @Override
                    public void actionPerformed(ActionEvent arg0) {
                     
                        AufgabeChange.NewTask(10);
                     
                    }
                });
         
            }
            //bn++;
        }
     
    }
 
}

und
Java:
package Level;

import java.awt.Color;

import Frame.FragenAnzeige;
import Frame.FragenDesign;

public class AufgabeChange {
 
    public static int pos;
 
    public static void NewTask(int Mult) {
     
        int Aufgabe[] = new int[6];
     
        Aufgabe[0] = (int) (Math.random()*Mult)+1;
        Aufgabe[1] = (int) (Math.random()*Mult)+1;
        Aufgabe[2] = Aufgabe[0] + Aufgabe[1];
        Aufgabe[3] = Aufgabe[0] + Aufgabe[1] + ((int) (Math.random()*3)+1);
        Aufgabe[4] = Aufgabe[0] + Aufgabe[1] + ((int) (Math.random()*3)+1);
        Aufgabe[5] = Aufgabe[0] + Aufgabe[1] + ((int) (Math.random()*3)-4);
     
        int Position[] = new int[4];
         
        int a = (int) (Math.random()*4);
     
        switch (a) {
        case 0:
            Position[0] = 0;
            Position[1] = 1;
            Position[2] = 2;
            Position[3] = 3;
            pos = 0;
            break;
         
        case 1:
            Position[0] = 1;
            Position[1] = 3;
            Position[2] = 0;
            Position[3] = 2;
            pos = 1;
            break;
         
        case 2:
            Position[0] = 2;
            Position[1] = 3;
            Position[2] = 0;
            Position[3] = 1;
            pos = 2;
            break;
         
        case 3:
            Position[0] = 3;
            Position[1] = 2;
            Position[2] = 1;
            Position[3] = 0;
            pos = 3;
            break;
         

        default:
            System.out.println("Fehler: Zuordnung der Zahlen in AufgabeChange.java");
            break;
        }
         
        FragenDesign.Frage.setText(Aufgabe[0] + " + " + Aufgabe[1]);
        FragenDesign.Antworten[Position[0]].setText(""+Aufgabe[2]);
        FragenDesign.Antworten[Position[1]].setText(""+Aufgabe[3]);
        FragenDesign.Antworten[Position[2]].setText(""+Aufgabe[4]);
        FragenDesign.Antworten[Position[3]].setText(""+Aufgabe[5]);
 
        } 
 
    }
     
 
}

Das Bild zeigt das Aussehen des Levels.
Ich möchte gerne, dass nach jeder Aufgabe überprüft wird, welcher Button gedrückt wurde und die Antwort richtig ist. Bei richtiger Antwort soll sich das jeweilige Label grün, bei falscher Antwort rot färben. Auf Grund meiner noch nicht ausreichenden Kenntnisse habe ich es leider nicht geschafft, dies umzusetzen und würde mich freuen, wenn mir jemand helfen könnte.
Vielen Dank im voraus!
 

Anhänge

  • Level 1.PNG
    Level 1.PNG
    231,8 KB · Aufrufe: 25
Moin,
Ich möchte gerne, dass nach jeder Aufgabe überprüft wird, welcher Button gedrückt wurde und die Antwort richtig ist. Bei richtiger Antwort soll sich das jeweilige Label grün, bei falscher Antwort rot färben
so ganz werde ich aus dem Code (im Zusammenhang mit der Frage) nicht schlau ... 😳

Meinst Du mit "Button" --> "FragenDesign.Antworten[Position[nn]]" ??
Wo kommt denn 'FragenDesign' her und wie sieht diese Klasse aus?

Vermutlich musst Du nur an jeden Button einen enstprechenden ActionListener hängen und dann in der jeweiligen ActionPerformed-Methode die gewünschten Änderungen durchführen!

VG Klaus
 
Moin,
ok, da war ich wohl zu oberflächlich 🙁
Habe das 'Newtask' nicht wirklich registriert, sondern eher nach 'label1' geschaut!

Aber wirklich klar ist mir nicht, was er da versucht ...
VG Klaus
 
@UnknownInnocent
Du kannst den Text des Buttons mit getText auslesen. Jetzt musst du es nur richtig einsetzen, wenn du ein Vergleich machen willst. Ganz neben bei: überlege dir, wie du die richtigen Antworten immer und überall zufällig platzierst, so dass jemand sich die richtigen Antworten zu Fragen nicht einfach Anhand der Stellung merkt. Macht wenig Sinn und der Lerneffekt geht verloren 😉
 
Die Antwort auf Deine Frage hat Dir @Javinner bereits gegeben. Allerdings sehe ich schon die nächste Frage: "woher weiß ich, welche Antwort die richtige ist?" ;-)
  1. Der Code hat ein grundsätzliches Problem: es ist so gut wie alles static und von jeder Stelle aus wird auf so ziemlich alles zugegriffen, was das Programm hergibt. Versuche, static ausschließlich für main() und Konstanten zu verwenden.
  2. Du kümmerst Dich um irgendwelche Buttons und ActionListener, anstatt Dich zunächst einmal auf das Kernproblem zu konzentrieren. Dadurch hast Du das Wissen um Fragen und Antworten auf irgendwelche UI-Elemente verteilt. Das macht die Sache unnötig kompliziert. Modelliere doch mal Deine Aufgaben explizit.
  3. Schreib das Programm erst mal für die Konsole. Damit wirst Du nicht von einem UI-Framework in eine Richtung gedrückt.
 

Neue Themen


Zurück
Oben