PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JAVA] mehrere Buttons auf einen Listener


Stormscud
2011-08-22, 16:31:27
Hallo,

ich hab hier ein kleines Problem: Ich habe in meinem Programm eine Oberfläche mit mehreren Tabs (jTabbedPane). Auf einigen liegt auch eine Tastatur (~80 Buttons auf einem Panel) zur Bedienung des Programms über einen Touchscreen. Die Tastatur wird auf 3 Tabs verwendet. Die erste habe ich schon auf meinen buttonPressedActionListener() registriert. Also jeden Button einzeln.

Gibt's denn irgendeine Möglichkeit den Listener auf die Buttons in einer For-Schleife zu registrieren? :confused:

Momentan sieht es halt so aus:

jButton6.addActionListener(new buttonPressedActionListener());
.
.
.
jButton86.addActionListener(new buttonPressedActionListener());

Ich würd das ganze halt gerne vereinfachen und nicht mit Copy&Paste arbeiten und dann 160 mal noch die Buttonnummer ändern.

Gast
2011-08-22, 16:44:49
Übergib die Referenz. Du Erzeugst in deinem Beispiel immer ein neues Objekt mit "new".

Listener bla = new Listener(); //einmal erzeugt

jButton1.addActionListener(bla); //referenz übergeben
jButton2.addActionListener(bla); //referenz übergeben
jButton3.addActionListener(bla); //referenz übergeben

Und Konstruktoren bitte groß schreiben. ;)

Baalzamon
2011-08-22, 16:50:15
[...] Gibt's denn irgendeine Möglichkeit den Listener auf die Buttons in einer For-Schleife zu registrieren? :confused:
[...]

Natürlich, dazu musst du nur deine Buttons in eine Datenstruktur packen, über die du dann iterieren kannst. Zum Beispiel eine ArrayList<JButton>.

ScottManDeath
2011-08-22, 23:17:43
Oder vielleicht mittels Reflection ueber die member iterieren und damit alle Buttons rausfischen und dann den Listener zuweisen

Stormscud@work
2011-08-23, 09:51:14
Vielen Dank für die Antworten. Werde die Vorschläge mal testen.