Variablenname dynamisch vergeben

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo!
Ich habe bei mir in einem Skript folgenden Code. Kann man die Variablenvergebung nicht irgendwie einfacher machen, in einer Schleife oder ähnlichem?
Code:
Button b1 = new Button();
cp.add(b1);
Button b2 = new Button();
cp.add(b2);
Button b3 = new Button();
cp.add(b3);
Button b4 = new Button();
cp.add(b4);
Button b5 = new Button();
cp.add(b5);
...
Button b36 = new Button();
cp.add(b36);
 
S

SlaterB

Gast
for (int i=0; i<36; i++) {
cp.add(new Button());
}

Sinn ist dabei aber fraglich ;)
 

wayne

Bekanntes Mitglied
jo, der sinn ist dabei schon fraglich. sinnvoller wäre es dann, wenn du einen ActionListener zusätzlich registrierst und diesen dazu befähigst, zwischen den buttons zu unterscheiden:
Code:
String[] buttonLabels = new String[]{"Knopf1", "Knopf2", "Knopf3"};
for( int i = 0; i < buttonLabels; i++ ){
    JButton button = new JButton(buttonLabels[i]);
    button.addActionListener(this);
    button.setActionCommand("button"+i);
}
...
public void actionPerformed(ActionEvent e){
    if( "button1".equals(e.getActionCommand() ){
        ...
    }
    else if( "button2".equals(e.getActionCommand() ){
        ...
    }
    else if(...){  // usw.
        ...
    }
}

sinnvoll oder nicht ist abhängig von dem was du damit tun willst. ich gebe dir recht, daß es eine fleißarbeit ist, für jeden button eine eigenes objekt zu deklarieren, dieses zu instanziieren, es mit den korrekten werten zu füllen, in ein layout einzubinden und eine entsprechende action zu registrieren, aber das ist in aktuellen programmiersprachen die realität, solange, bis irgenwann mal eine metasprache existiert, die die aufforderung "ich will nen speichern-button haben" korrekt in code umsetzt. selbstverständlich aber kannst du dir viel arbeit ersparen, wenn du für gleiche arbeitsschritte im umgang mit GUI-elementen methoden entwirfst. beispielsweise:
Code:
private JButton createButton(String label, Container parent, int x, int y, String actionCommand){
    JButton button = new JButton(label);
    button.addActionListener(this);
    button.setActionCommand(actionCommand);
    parent.add(label,new GridBagLayout( x, y, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, 
                     GridBagConstraints.HORIZONTAL, new Insets( 0, 0, 0, 0), 20, 5);    
}

viel glück

wayne
 
G

Gast

Gast
SlaterB hat gesagt.:
for (int i=0; i<36; i++) {
cp.add(new Button());
}

Sinn ist dabei aber fraglich ;)

Wenn ich das so machen würde, wie könnte ich dann später z.B. bei dem Button 25 den Hintergrund verändern.
Mit meinem Code könnte ich einfach b25.setIcon(icon) eingeben, aber bei dir würrde das nicht gehen, weil die Buttons keine Namen haben.
 

Ariol

Top Contributor
Code:
Button buttons = new Button[36];

for(int i=0; i < buttons.length; i++)
{
    buttons[i] = new Button();
    //hier eventuell weitere Eigenschaften einstellen (ActionListener, Icon,...)
    cp.add(buttons[i])
}

den 25. button kannst du dann mit buttons[24].setIcon(icon) ändern
 
S

SlaterB

Gast
ja, das mit den Variablennamen hatte ich etwas verschlafen, steht sogar in der Überschrift..

also wenn du 36 einzelne Variablen haben willst, dann musst du sich auch einzeln definieren, da führt kein Weg dran vorbei,

man könnte da noch etwas tricksen mit einem Array nebenbei,
a la

JButton b1, b2, b3, ..;
JButton[] buttons = {b1,b2,b3, ..};
// Schleife über Array zur Erzeugung der Buttons, Einfügung ins cp und anderes allgemeines
+
// Einzelbefehlte wie b25.setIcon(icon)

deutlich schöner ist aber, einfach nur ein Array einzusetzen, siehe Ariol
 
B

bygones

Gast
Gast hat gesagt.:
SlaterB hat gesagt.:
for (int i=0; i<36; i++) {
cp.add(new Button());
}

Sinn ist dabei aber fraglich ;)

Wenn ich das so machen würde, wie könnte ich dann später z.B. bei dem Button 25 den Hintergrund verändern.
Mit meinem Code könnte ich einfach b25.setIcon(icon) eingeben, aber bei dir würrde das nicht gehen, weil die Buttons keine Namen haben.
im actionlistener zb (oder in den anderen listener ebenso) bekommst du ueber getSource den Verursacher der Action... also zb den Button. Dann kannst du mit dem machen was du willst - du brauchst also gar nicht irgendwelche namen dafuer
 

Saxony

Top Contributor
Für namenlose Komponenten gibt es immer noch Container#getComponentCount und Component#getComponent(int index)

Viel Spass so zu arbeiten. :D

bye Saxony
 

Sensenreich

Mitglied
Code:
for(int i = 0; i < 42)
{
System.out.println("Button b"+i+" = new Button(); ");
sysout(bla...);
}

ausgeben, kopieren und einfügen.
Aber ob das viel Sinn ergibt außer das du dir die Tipparbeit sparst...
Eher solltest du dein Problem nochmal überdenken und schaun ob du wirklich Buttons benötigst oder ob sowas wie MouseListener ausreicht um dann die Kords abfragst.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Variablenname dynamisch festlegen Java Basics - Anfänger-Themen 3
H Variablenname dynamisch festlegen Java Basics - Anfänger-Themen 3
L Variablen Dynamische Variablenname Java Basics - Anfänger-Themen 9
K Variablenname soll der Inhalt vom String sein Java Basics - Anfänger-Themen 2
F String -> Variablenname Java Basics - Anfänger-Themen 9
Devil0s Java variable in Variablenname Java Basics - Anfänger-Themen 21
H variablenname errechnen Java Basics - Anfänger-Themen 11
M Schleifenzähler an Variablenname anhängen Java Basics - Anfänger-Themen 6
D Variablenname aus Variable ? Java Basics - Anfänger-Themen 15
M Variablenname mithilfe einer schleife erstellen? Java Basics - Anfänger-Themen 2
G variabler variablenname Java Basics - Anfänger-Themen 18
A Variablenname aus Array laden! Java Basics - Anfänger-Themen 11
Bierhumpen Variablenname übergeben? Java Basics - Anfänger-Themen 11
H Variablenname in Schleife ändern Java Basics - Anfänger-Themen 2
G String soll als Variablenname dienen Java Basics - Anfänger-Themen 19
B Variablenname ermitteln Java Basics - Anfänger-Themen 19
A Variablenname aus Variablen zusammensetzen? 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
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
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
D Labels Dynamisch ? Java Basics - Anfänger-Themen 5
6 Swing: Dynamisch erzeugte Objekte sind verschoben Java Basics - Anfänger-Themen 2
H 2DArray manuell dynamisch erweitern Java Basics - Anfänger-Themen 7
G Länge eines Array trimmen oder dynamisch verändern. Java Basics - Anfänger-Themen 3
M Dynamisch Klassen aufrufen Java Basics - Anfänger-Themen 4
H JLabel dynamisch anzeigen? Java Basics - Anfänger-Themen 10
T ActionListener zu Buttons dynamisch zuordnen Java Basics - Anfänger-Themen 10
G dynamisch Jtextfields erzeugen Java Basics - Anfänger-Themen 3
M HTML Seite die Daten in JavaApplet dynamisch verarbeiten Java Basics - Anfänger-Themen 2
J Tabelle mit mehreren Zeilen dynamisch aufbauen Java Basics - Anfänger-Themen 2
K Bild dynamisch erstellen Java Basics - Anfänger-Themen 2
M Klasse dynamisch erzeugen! Java Basics - Anfänger-Themen 4
M [SOLVED]JComboBoxen dynamisch erstellen und abfragen Java Basics - Anfänger-Themen 2
S Dynamisch Platz für ein Array reservieren? Java Basics - Anfänger-Themen 7
Z Objekte dynamisch erzeugen Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben