[Java] [GELÖST] erstellen von Listenern in for schleife
Übersicht

![]() |
US-Blitzehemals "SimssmiS"Betreff: [Java] [GELÖST] erstellen von Listenern in for schleife |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
mein Problem ist folgendes: Ich erzeuge eine Reihe von Buttons, dessen Anzahl von einer Anzahl von Bildern in einem bestimmten Ordner hinterlegt sind abhängt. Soweit so gut. Problematisch wird es jedoch dann, wenn ich für genannte Buttons die Listener erzeugen will. Code: [AUSKLAPPEN] private void initListeners(){ for (int i=0;i<tileB.length;i++){ tileB[i].addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { chosen=tileImages[i]; //<-------- i must be declared final System.out.println(chosen); } }); } } Ich möchte das die Buttons eine Variable gleich ihrer Position (1,2,3 usw. Button im Array) setzt. Habt ihr eine Idee wie ich dies bewerkstelligen könnte? Viele Grüße US_Blitz |
||
- Zuletzt bearbeitet von US-Blitz am Mo, Apr 15, 2013 21:20, insgesamt einmal bearbeitet
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstelle eine Subklasse in der du den ActionListener implementierst und die entsprechende Methode überschreibst und bei addActionListener musst du dann den Konstruktor der Subklasse aufrufen.
In der überschriebenen Methode musst du natürlich noch überprüfen, welcher Button gedrückt wude und dann reagierst du dementsprechend drauf. |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
![]() |
US-Blitzehemals "SimssmiS" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok danke für die Hilfe.
Doch ich bin noch recht neu in diesem Bereich und habe das noch nicht genau verstanden. Könntest du es mir vlt. noch einmal erklären? |
||
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Werde gleich mal ein Beispiel machen. Bin gerade aber nicht am Pc ![]() |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] public class MyCoolActionListener implements ActionListener {
int chosenI; public MyCoolActionListener(int chosenI) { this.chosenI = chosenI; } @Override public void actionPerformed(ActionEvent e) { chosen=tileImages[chosenI]; System.out.println(chosen); } } //Verwendung: private void initListeners(){ for (int i=0;i<tileB.length;i++){ tileB[i].addActionListener(new MyCoolActionListener(i)); } oder vielleicht gleich: Code: [AUSKLAPPEN] public class MyCoolActionListener implements ActionListener {
Image chosen; //oder was auch immer für ein public MyCoolActionListener(Image chosen) { this.chosen = chosen; } @Override public void actionPerformed(ActionEvent e) { System.out.println(chosen); } } //Verwendung: private void initListeners(){ for (int i=0;i<tileB.length;i++){ tileB[i].addActionListener(new MyCoolActionListener(tileImages[i])); } } Und wenn ich mich nicht vertippt habe, dann sollte das so funktionieren. (Habs auch ohne IDE gemacht) |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Addi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kleines Beispiel mit JButton funktioniert allerdings nur wenn du den ActionListener nur für JButton benutzt,
solltest du ihn auch für andere Sachen benutzen musst du mit instanceof überprüfen, um welches Objekt es sich bei dem, von getSource(), zurückgelieferten Objekt handelt. Code: [AUSKLAPPEN] ...
public void Initialisieren() { Button_Handler listener = new Button_Handler(); for(int i = 0; i < tileB.length; i++) tlieB[i].addActionListener(listener); } private class Button_Handler implements ActionListener { public void actionPerformed(ActionEvent e) { JButton tempBtn = e.getSource(); //checken welcher Button geklickt wurde for(int i = 0; i < tileB.length; i++) { if(tileB[i] == tempBtn) System.out.println(tileImages[i]); } } } } |
||
BP/B3D/BMax : Lerne Java : Früher mal Lite-C : Gewinner BCC 62 |
![]() |
US-Blitzehemals "SimssmiS" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank euch!
Ich habe viel gelernt und das Problem nun gelöst. vlt. könnt ihr mir ja bei meinem aktuellen Problem auch helfen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group