java: Methode auf Button-Klick warten lassen
Hallo,
ich programmiere gerade ein kleines Spiel in Java (das NIM-Spiel ;) ). Auf der Konsole funktioniert es schon eins a und jetzt wollte ich eine GUI hinzufügen. Problem: Ich habe eine int Methode die mir die Anzahl der Hoelzchen zurück geben soll, die der User wegnimmt. Die Anzahl wird über Buttons ermittelt. Das ganze schaut dann so aus:
public int getEingabe(){
Spiel.btn1.addActionListener(handler);
Spiel.btn2.addActionListener(handler);
Spiel.btn3.addActionListener(handler);
return wegnehmen;
}
private class DerHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource()==Spiel.btn1){
wegnehmen = 1;
}
else if(event.getSource()==Spiel.btn2){
wegnehmen = 2;
}
else if(event.getSource()==Spiel.btn3){
wegnehmen = 3;
}
}
}
Aufgerufen wird die "getEingabe"-Methode so:
public void ablauf(){
com = new Computer();
s1 = new Player();
int sweg=0, cweg=0;
sweg = s1.getEingabe();
taStatus.setText("Sie nehmen " + sweg + " Hoelzchen weg.");
}
Wie bekomme ich jetzt die "getEingabe" Methode dazu, zu warten bis einer der Buttons gedrückt wurde, und erst dann einen Wert zurück zu geben?
Habe schon mit if-Abfragen, booleanschen Werten und Schleifen experimentiert - erfolglos. Hat jemand eine Idee?
2 Antworten
Du musst deine ablauf-Methode splitten. Die sorgt nur dafür, dass das Spiel, alle Spieler und und die GUI initialisiert werden. Auch die handler an die Buttons zu kleben gehört da rein!
Das warten auf den Button-klick umgehst du, in dem du sämtliche Aktionen, die den Buttonklick erfordern oder danach passieren, im handler abarbeitest.
Stichwort: Java key listener
Oh Buttons, verlesen :P Da gibts auch einen Button Listener.
Da gibts auch einen Button Listener.
Ist Dir aufgefallen das ich da schon einen ActionListener für die Buttons habe?
Ich will ja aber keine Tastatureingabe, sondern die drei Buttons... Was bringt mir da ein keyListener?