Frage von bishare, 22

Wie kann ich während eines ActionListeners Abfragen in Java machen?

Komme irgendwie nicht weiter. Habe 4 Buttons. 1, 2,3,4. In einem Textarea steht dann jeweils, was man machen kann. Am Anfang kann man seinen Helden aussuchen. A, B, C oder D. Wenn man auf Button1 klickt, kriegt man Held A undundund. Wenn ich auf Generieren klicke, soll der dann durchgehen und fragen "Willst du kämpfen1 fliehen2...". Wenn ich am Anfang auf 1 geklickt habe, geht er durch und geht von jeder Abfrage aus, dass ich auf 1 geklickt habe. Kann ich irgendwie im Actionlistener so Stops machen, wo es neu abgefragt wird?

Antwort
von GedankenGruetze, 7

Ich glaube, wenn ich es richtig verstehe, es wäre am sinnvollsten, wenn du die ActionListener aufsplittest.

Du hast also zwei ActionListener-Klassen. Du meldest die erste ALK an die Buttons an, welche handeln, welcher Held ausgewählt werden soll. Nachdem das passiert ist, kannst du den Listener wieder abmelden und die nächste Listenerklasse an den Buttons anmelden. So musst du die Buttons nicht neu erzeugen und kannst die Aufgaben (Auswahl des Helden / Aktion des Helden) voneinander trennen.

Antwort
von Cultist, 18

Habe Schwierigkeiten dein Problem zu verstehen.

Versuch die Frage doch bitte ein wenig klarer zu formulieren (evtl. mit Hilfe von Pseudocode).

Kommentar von bishare ,

(Mal gucken, ob ich es schaffe xD 

private JButton B1;

private JButton B2;

private int Button = 0;

(Verkürze mal bisschen) Habe jetzt 2 Buttons und ein Parameter. Wenn ich auf B1 klicke, wird Button = 1 gesetzt.

Wenn ich auf B2 klicke, wird Button = 2 gesetzt.

B1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Button = 1
}

B2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Button = 2
}

Am Anfang des Programms wird in einem Textarea nach einem Helden gefragt. Den Helden kann man dann aussuchen. Wenn man dann auf Heldgenerieren klickt, wird er generiert und es wird sofort nach der nächsten Aktion gefragt.

btnHeldGenerieren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

Textarea.setText("Suchen Sie sich einen Helden aus. 1 für A oder 2 für B");

if (Button ==1) {

(Bild von Held1 wird angezeigt)

}

else if (Button == 2) {

(Bild von Held2 wird angezeigt)

}

//Jetzt soll hier noch mal abgewartet werden, bis der Benutzter wieder einen der 2 Button klickt

Textarea.setText("Wollen Sie (1) Kämpfen oder (2) Fliehen");

if (Button == 1) {

kämpft();

}

else if (Button == 2) {

flieht();

}

//Das ganze Programm läuft jetzt über den Button Actionlistener Heldgenerieren. Habe es jetzt irgendwie so gelöst, dass es doch über die Buttons B1 und B2 laufen und immer neue angezeigt werden, damit man wieder aussuchen kann. (Klicke ich B1, werden B1 und B2 unsichtbar und auf der gleichen Stelle kommen Bu1 und Bu2...)

}}

Wie mache ich es, dass ich nur die 4 Buttons muss und nicht immer neue Generieren muss?

Kommentar von Cultist ,

Wenn ich es richtig verstanden habe dann glaube ich das Problem liegt bei dem int. Da das selbe Attribu das fuer die Auswahl des Helden auch fuer die Aktion der Helden verwendet wird. Aenderst du die Aktion aenderst du also auch autmatisch den Helden. 

Ich wuerde einen neuen int deklarieren. So hast du dann einen int (iHelden) und einen int (iAktion).

Kommentar von bishare ,

Aber iAktion bleibt ja durchgehend bei dem Listener gleich, wenn es einen int Wert angenommen hat.

Kommentar von Cultist ,

???

Keine passende Antwort gefunden?

Fragen Sie die Community