JButtons dynamisch generieren mit verschiedenen actionhandlern

Agassiz

Mitglied
Hi,

kann ich in einer for schleife buttons so generieren, dass ich mit nem actionlistener
auf jeden button anders reagiere?

ich kenne nur:
Java:
for (int i=0;i< someInt;i++){

JButton button = new JButton("Button");

button.addActionlistener(this);

}

aber dann kann ich die Buttons ja nicht explizit abfragen.

Derzeit definiere ich mir die Buttons einzeln, was bei vielen Buttons sehr viel (doppelter)code ist.

Ich hoffe ihr habt verstanden was ich meine :)
 

Michael...

Top Contributor
Man könnte jedem Button einen eigenen ActionListener zuweisen, man könnte die Buttons per ActionCommand unterscheiden... da gibt's viele Möglichkeiten.
Andererseits könnte man sich auch überlegen, ob die Lösung mit vielen (was ist viel?) überhaupt ein geeigneter Weg ist...
 

socialcocer

Mitglied
ich weiß nicht ob ich dich richtig verstanden habe, aber meinst du sowas?
Java:
public class Bla implements ActionListener{
	private Vector<JButton> buttons = new Vector<JButton>();
	private int max = 10;
	public void setButtons() {
		for(int i = 0; i<max;i++){
			buttons.add(new JButton("Button"+ i));
			buttons.get(i).addActionListener(this);
		}
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
	
		if(arg0.getSource().equals(buttons.get(0))){
			
		}
	//und so weiter	
	}
	
}
Also einfach in eine Collection abspeichern und später bei Bedarf zugreifen.
 

Agassiz

Mitglied
ich weiß nicht ob ich dich richtig verstanden habe, aber meinst du sowas?
Java:
public class Bla implements ActionListener{
	private Vector<JButton> buttons = new Vector<JButton>();
	private int max = 10;
	public void setButtons() {
		for(int i = 0; i<max;i++){
			buttons.add(new JButton("Button"+ i));
			buttons.get(i).addActionListener(this);
		}
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
	
		if(arg0.getSource().equals(buttons.get(0))){
			
		}
	//und so weiter	
	}
	
}
Also einfach in eine Collection abspeichern und später bei Bedarf zugreifen.

Ich mache folgendes um das ganze mal besser zu erklären.

In einer XML datei liegen ein paar shops (<Webshop>).

Jeder Webshop eine id.

Momentan werden die Buttons generiert indem ich die anzahl der webshops abfrage.

So wie du das vorgeschlagen hast, könnte ich dann doch per index auf die shops zugreifen oder?

Eine andere Methode wäre, dem Button den selben Namen zu geben wie die ID des webshops, dessen funktion ausgeführt werden soll.

Was wäre sinnvoller?

Bis hierher habt ihr mir schon weitergeholfen :)

(Oft hilft es auch, sich die Fragestellung genau zu überlegen, dann kommt man _fast_ selbst drauf ^^ - wenn man das Code-Know-How hat :) )
 

socialcocer

Mitglied
Also würde den Ansatz mit der ID bevorzugen, da du damit grafischen Output von der eigentlichen Logik trennst. Welcher Benutzer möchten einen Button wo eine nichts-sagende ID drauf ist?

Interessant wäre zu wissen, wie die IDs erstellt werden, hätte man die IDs in einer konstanten Reihenfolge (z.b Shop1 =54, Shop2=56, Shop3=58..) , würde es das Arbeiten mit den index erheblich erleichtern.
 

Michael...

Top Contributor
Eine andere Methode wäre, dem Button den selben Namen zu geben wie die ID des webshops, dessen funktion ausgeführt werden soll.
Das wäre dann mein Vorschlag "ActionCommand". JButton besitzt eine Methode setActionCommand(String s), damit ist der ActionCommand unabhängig vom angezeigten Text. Das ActionEvent kann man dann per getActionCommand() nach diesem Command fragen und damit über die ID entsprechende Methoden aufrufen.

Aber: Wenn es sich um Shops handelt, wird dann nach dem Knopfdruck nicht immer das selbe gemacht - nur eben mit dem jeweiligen Shop? Dann würde doch eine Methode ausreichen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
T NullLayout und JButtons Java Basics - Anfänger-Themen 4
F Interface JButtons werden nicht angezeigt... Java Basics - Anfänger-Themen 5
S Jbuttons an Koordinaten Java Basics - Anfänger-Themen 33
M JButtons verschieben Java Basics - Anfänger-Themen 13
J Problem bei Param.übergabe und dem erstellen von JButtons Java Basics - Anfänger-Themen 4
N JButtons vergleichen Java Basics - Anfänger-Themen 3
L Platz auf JButtons verändern Java Basics - Anfänger-Themen 18
D java jbuttons auf dem Hintergrundbild Java Basics - Anfänger-Themen 11
E JButtons auf JFrame nicht immer sichtbar Java Basics - Anfänger-Themen 4
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
X Probleme mit JButtons Java Basics - Anfänger-Themen 6
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
0 jButtons einen Int wert zuweisen MineSweaper Java Basics - Anfänger-Themen 3
P Wert eines JButtons Java Basics - Anfänger-Themen 6
R JButtons in eine Array legen GUI Java Basics - Anfänger-Themen 5
M JPanel, JButtons, Borderlayout Java Basics - Anfänger-Themen 8
M Dynamische JButtons mit ActionListener Java Basics - Anfänger-Themen 7
Z JButtons & Actionlistener Java Basics - Anfänger-Themen 5
W Variable anzahl an JButtons Java Basics - Anfänger-Themen 5
A Problem mit einem Array aus JButtons Java Basics - Anfänger-Themen 4
K unbestimmte Anzahl JButtons Java Basics - Anfänger-Themen 2
H JButtons anpassen Java Basics - Anfänger-Themen 3
G Text des JButtons? Java Basics - Anfänger-Themen 2
J JButtons mit GridBagLayout anordnen Java Basics - Anfänger-Themen 9
J Rand eines JButtons entfernen Java Basics - Anfänger-Themen 3
M umbennenen eines JButtons Java Basics - Anfänger-Themen 2
G JButtons mit Rand Java Basics - Anfänger-Themen 3
M JButtons werden nicht angezeigt Java Basics - Anfänger-Themen 13
B Größe von JButtons Java Basics - Anfänger-Themen 2
R Buttons können sich bewegen und JButtons nicht? Java Basics - Anfänger-Themen 5
V Problem mit JButtons und JTextField Java Basics - Anfänger-Themen 5
C ActionEvent bei JButtons Java Basics - Anfänger-Themen 2
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
J Verundung dynamisch gestalten Java Basics - Anfänger-Themen 21
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
B Klassen Klasse dynamisch laden. Java Basics - Anfänger-Themen 8
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
D Koordinatensystem dynamisch anpassen Java Basics - Anfänger-Themen 17
J Tableview, ObservableList ein bisschen dynamisch Java Basics - Anfänger-Themen 6
C Array - Länge dynamisch übergeben Java Basics - Anfänger-Themen 7
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
G Array dynamisch ausgeben Java Basics - Anfänger-Themen 3
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
F Erste Schritte If Bedingung in Schleife dynamisch erweitern Java Basics - Anfänger-Themen 4
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
Y Eingabe-Formular mit JSP dynamisch machen - j/n/wie? Java Basics - Anfänger-Themen 2
N Dynamisch JTree erstellen Java Basics - Anfänger-Themen 3
R Objekte dynamisch erstellen? Java Basics - Anfänger-Themen 14
C Variablen Array dynamisch halten und ausrechnen Java Basics - Anfänger-Themen 14
N Ergebnisse dynamisch in Tabelle schreiben Java Basics - Anfänger-Themen 3
G JObjekte dynamisch vom Server erzeugen lassen Java Basics - Anfänger-Themen 4
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
H Objekte dynamisch erzeugen? Java Basics - Anfänger-Themen 6
M Variablen dynamisch variableninhalt von Object auslesen Java Basics - Anfänger-Themen 4
S if-Block dynamisch aufbauen Java Basics - Anfänger-Themen 5
M Static Variable "dynamisch" aufrufen? Java Basics - Anfänger-Themen 8
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
P Scrollpane mit dynamisch erzeugten Komponenten Java Basics - Anfänger-Themen 3
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
R Liste graphischer Objekte z.B. JButton dynamisch erstellen Java Basics - Anfänger-Themen 13
A Dynamisch die Anzahl der Threads in der Cyclic Barrier ändern Java Basics - Anfänger-Themen 2
K Datentypen Full qualified Name dynamisch gestalten Java Basics - Anfänger-Themen 7
M For-Schleifen dynamisch generieren? Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2
D JPanel dynamisch anpassen Java Basics - Anfänger-Themen 5
S Dialog dynamisch vergrößern Java Basics - Anfänger-Themen 2
S Dynamisch Zeit auslesen Java Basics - Anfänger-Themen 11
M JTextPane dynamisch erzeugen Java Basics - Anfänger-Themen 2
J Aufgaben Dynamisch auf Pool von Threads verteilen. Java Basics - Anfänger-Themen 3
D ArrayList dynamisch befüllen Java Basics - Anfänger-Themen 14
G Objekteigenschaften dynamisch erzeugen Java Basics - Anfänger-Themen 7
jnoob Checkbox in Dialog Dynamisch erstellen Java Basics - Anfänger-Themen 2
K suche nicht dynamisch Datenstruktur Java Basics - Anfänger-Themen 6
J ListModel dynamisch und schnell aber sicher ändern Java Basics - Anfänger-Themen 7
M Dynamisch Instanzen erstellen. Java Basics - Anfänger-Themen 4
G Zweidimensionales Array - dynamisch Java Basics - Anfänger-Themen 4
B arrays dynamisch vergrößern Java Basics - Anfänger-Themen 5
V Kundenklasse dynamisch erzeugen und id hochzählen? Java Basics - Anfänger-Themen 4
C Dynamisch durch alle Objektvariablen eines Objektes iteriere Java Basics - Anfänger-Themen 15
P JPanel dynamisch mit ActionListener verwalten Java Basics - Anfänger-Themen 3
R Arraygroesse dynamisch anpassen Java Basics - Anfänger-Themen 8
X this dynamisch, super statisch? Java Basics - Anfänger-Themen 3
G Namen von ArrayListen dynamisch erzeugen Java Basics - Anfänger-Themen 4
H variable dynamisch ändern Java Basics - Anfänger-Themen 2
G Klasse dynamisch ohne Datei compilieren: Fehler Java Basics - Anfänger-Themen 4
G Klasse dynamisch nachladen: Fehler Java Basics - Anfänger-Themen 9
T Array Dynamisch Erweiterm Java Basics - Anfänger-Themen 15
H dynamisch Klassen laden und ausführen Java Basics - Anfänger-Themen 3
M Gleichungen dynamisch erstellen und ausrechnen? Java Basics - Anfänger-Themen 8
G Pfad dynamisch gestalten. Java Basics - Anfänger-Themen 3
B Matrix Dynamisch erzeugen Java Basics - Anfänger-Themen 3
G JTable dynamisch erzeugen. Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben