ActionListener wird mit jedem Mal öfter aufgerufen

der-konstantin

Neues Mitglied
Hallo Allerseits,

also ich will dass wenn man auf einen Button klickt, dass ein Objekt welches ausgewählt ist aus einem Array gelöscht wird, bzw. von den kommenden Objekten Überschrieben wird.

Der ActionListener sieht dann wie folgender aus:
Java:
bl.addActionListener(new ActionListener(){
	@Override public void actionPerformed(ActionEvent e){
		System.out.println("löschen");
		for(int i = wanda.element ; i < Wand.i ; i++) {
			Wand.a{i-1} = Wand.a{i};
			Wand.a{i-1}.element = i;
		}
		Wand.a{Wand.i} = null;
		Wand.i -= 1;
	}
});
(ich habe anstatt "[]", "{}" genutzt, weil da sonst "[" stehen würde)

Mein Problem ist jetzt, dass der ActionListener beim ersten Klicken das Buttons zwar nur ein mal durchgeführt wird, doch beim zweiten mal zwei mal und so weiter.
Und so wird nicht ein Objekt gelöscht sonder zwei oder halt mehr.

Woran liegt das, oder wie kann ich es verhindern?
 
Der ActionListener sieht dann wie folgender aus:
Java:
bl.addActionListener(new ActionListener(){
	@Override public void actionPerformed(ActionEvent e){
		System.out.println("löschen");
		for(int i = wanda.element ; i < Wand.i ; i++) {
			Wand.a{i-1} = Wand.a{i};
			Wand.a{i-1}.element = i;
		}
		Wand.a{Wand.i} = null;
		Wand.i -= 1;
	}
});

Wenn der Actionlistener mehrmals ausgeführt wird, dann würde ich sagen, dass er auch mehrmals zum Button hinzugefügt wurde. Das ist aber leider aus deinem Codefragment nicht ersichtlich. Falls das Problem weiter besteht, könntest du ein KSKB erstellen.

Gruß,
André
 
Danke @André für den hinweis,

es liegt daran dass ich den Button static gesetzt habe und dem selben Button bei jedem Öffnen des Fensterrs einen neuen ActionListener gegeben habe. Bzw. ich habe das Fenster jedes Mal mit new Fenster() geöffnet und nicht mit setVisible(true)
 

Zurück
Oben