Hallo,
ich habe gerade einen etwas verworrenen Code zusammengestellt und stehe nun vor ein Problem:
Ich habe zwei Klassen.
Die eine (Klasse: Field) erbt vom JButton und hat in ihr auch einen ActionListener.
In der anderen Klasse (Klasse: MainFrame) erstelle ich ein paar Instanzen der Klasse Field.
Nun wollte ich, dass in dieser Klasse, etwas überprüft wird, immer wenn ein Button gedrückt wird.
Da ich aber keine Idee hatte, wie ich von der einen Klasse auf den ActionListener der anderen Klasse zugreifen könnte, habe ich kurzerhand noch an jeden Button ein ActionListener hinzugefügt.
Das Problem ist jetzt nur, dass der ActionListener in der Klasse Field eine Variable ändert.
Der ActionListener der anderen Klasse scheint jedoch als erstes "dranzukommen", wodurch er erst später (beim erneuten drücken) die Variablenänderung sieht.
Hört sich ziemlich verwirren an, ich hoffe, dass ich mit ein bischen Code mein Problem näher beschreiben kann:
Klasse: MainFrame
Klasse: Field
So, da der Action Listener aus MainFrame zuerst drankommt, hängt matchEnd() mit seinem Vergleich praktisch immer einen Zu hinterher, wodurch wiederum der setText()-Aufruf einen Buttonklick hinterherhängt.
Ich hoffe mein Problem ist verstanden worden und ihr könnt mir helfen.
ich habe gerade einen etwas verworrenen Code zusammengestellt und stehe nun vor ein Problem:
Ich habe zwei Klassen.
Die eine (Klasse: Field) erbt vom JButton und hat in ihr auch einen ActionListener.
In der anderen Klasse (Klasse: MainFrame) erstelle ich ein paar Instanzen der Klasse Field.
Nun wollte ich, dass in dieser Klasse, etwas überprüft wird, immer wenn ein Button gedrückt wird.
Da ich aber keine Idee hatte, wie ich von der einen Klasse auf den ActionListener der anderen Klasse zugreifen könnte, habe ich kurzerhand noch an jeden Button ein ActionListener hinzugefügt.
Das Problem ist jetzt nur, dass der ActionListener in der Klasse Field eine Variable ändert.
Der ActionListener der anderen Klasse scheint jedoch als erstes "dranzukommen", wodurch er erst später (beim erneuten drücken) die Variablenänderung sieht.
Hört sich ziemlich verwirren an, ich hoffe, dass ich mit ein bischen Code mein Problem näher beschreiben kann:
Klasse: MainFrame
Code:
//Instanzen der anderen Klasse deklarieren
private Field[][] fields = new Field[3][3];
...
fields[i][j] = new Field();
playground.add(fields[i][j]);
fields[i][j].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (matchEnd() == true) {
fields[0][0].setText("Gewonnen");
}
}
});
...
private boolean matchEnd() {
//Wenn die Variable aus Field so ist dann true, sonst false returnen
}
Code:
public class Field extends JButton implements ActionListener{
...
public void actionPerformed(ActionEvent e) {
//änder eine Variable
}
public Field() {
this.addActionListener(this);
}
Ich hoffe mein Problem ist verstanden worden und ihr könnt mir helfen.