BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- Java Eventmodell (http://www.black-board.net/thread.php?threadid=10425)


Geschrieben von Zmaster am 15.02.2003 um 17:20:

traurig Eventmodell

Hallo,
ich habe mal ne Frage, was Java angeht.
Und zwar habe ich ein kleines Fenster gemacht und darauf mehrere Buttons platziert.
So, nun möchte ich auch auf das Klicken reagieren und das habe ich über die Methode .addActionListener() gemacht.
Als Parameter habe ich eine Klasse angegeben, die ich später implementiert habe und zwar von der Klasse java.awt.event.ActionListener!
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
class Event_Button_Adapter implements ActionListener
 {
   Form1 adapt;
   Event_Button_Adapter(Form1 adapt)
    {
       this.adapt = adapt;
    }

  public void actionPerformed(ActionEvent e)
   {
      adapt.Button_actionPerformed(e);
   }
 }

Die Methode actionPerformed(ActionEvent e) ruft auch meine selbstgeschriebene Methode Button_actionPerformed(e) auf.
Jetzt möchte ich aber nicht für jeden Button eine eigene Klasse schreiben und eine extra Methode.
Wie kann ich erreichen, dass ich die Buttons unterscheiden kann?
Am Besten wäre, wenn es schon in der actionPerformed Methode passieren könnte.

Ich hoffe auf eure Hilfe.
Gruß
zmaster



Geschrieben von Compuholic am 15.02.2003 um 21:19:

 

Ist schon lange her, das ich was mit Java gemacht habe.

Vielleicht hilft Dir die Methode "GetActionCommand()"
Wenn ich mich richtig erinnere gibt diese Funktion den Namen des Buttons zurück, der geklickt wurde.

Leider weiß ich nicht mehr, wie man sie richtig benutzt. Ich schätze, das man Ihr das ActionEvent übergeben muß. Aber such einfach mal in deiner Doku. Ich wäre auch daran interessiert, meine Erinnerung etwas aufzufrischen.



Geschrieben von phlox81 am 15.02.2003 um 21:31:

 

hm, Polymorphismus müsstest du da benutzen.
Und für jeden button eine Klasse erstellen,
bzw. du könntest die Buttons anhand ihrer ID (so machts die MFC)
oder über ihre Beschriftung unterscheiden...

Devil



Geschrieben von Zmaster am 15.02.2003 um 23:53:

geschockt wow

Wow, ich hätte nicht so schnell mit eurer Hilfe gerechnet.
Das Forum werde ich mir auf jeden Fall merken!

Also danke erstmal an Compuholic! (ich komme mir jetzt schon wie bei der Echo-Verleihung vor) Augenzwinkern
Die Methode getActionCommand() ist mein Retter geworden. Sie gibt als String die Beschriftung wieder zurück.
Die Methode getID() habe ich auch schon probiert, aber komischer Weise gab sie mir bei zwei verschiedenen Buttons die gleiche Zahl wieder.
Ich werde mich später mal damit genauer auseinandersetzen.
Jetzt habe ich erstmal ne Lösung! smile )

Danke und Respekt
zmaster



Geschrieben von Deef am 16.02.2003 um 10:57:

 

getID() nutzt Dir nur etwas, wenn Du dem Button vorher auch ne ID zugewiesen hast Augenzwinkern

Es gäbe noch die Möglichkeit beim Aufruf der ActionListener - Klasse einen String mit zu übergeben und den dann auszuwerten ... alsi zum Beispiel

Zitat:

.
.
.
button1.addActionListener(new ActionKlasse(this,schliessen));
button2.addActionListener(new ActionKlasse(this,neu));
.
.
.

class ActionKlasse implements ActionListener
{
Fensterklasse obj;
String aktion;

ActionKlasse(Fensterklasse obj2; String aktiosString)
{
obj = obj2;
aktion = aktionsString;
}

public void actionPerformed(ActionEvent e)
{
if(aktion.equals("schliessen") obj.dispose();
if(aktion.equals("neu") ..... ;
}

}



Hoffe Du verstehst was ich meine großes Grinsen


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH