# dynamisch erzeugte buttons



## siroFranz (6. Mrz 2007)

hallo,

habe wie im beispiel unten buttons erzeugt, die alle keinen eindeutigen namen haben, wie kann ich diese nun ansprechen über z.B. e.getSource() == button ???



```
for(int k=0; k<this.buttonBar.length; k++){
             this.toolBarOne.add(this.button = new JButton(new ImageIcon(this.buttonBar[0][k])));
         }
```


Gruß


----------



## SlaterB (6. Mrz 2007)

da du die button anscheinend in keiner Variablen speicherst
(this.button wird sofort überschrieben)
macht ein Vergleich keinen Sinn,

hole den Button einfach mit e.getSourche und arbeite damit,

oder speichere die Buttons irgendwo, z.B. in einem Array,
dann geht der ==-Vergleich, ja


----------



## siroFranz (7. Mrz 2007)

haste ein Bsp. wie ich ich von dem im array gespeicherten namen buttons erzeuge


----------



## SlaterB (7. Mrz 2007)

dieser Satz macht keinen Sinn,
ein Satz a la 
'haste ein Bsp. wie ich die erzeugten buttons ich einem Array speichere'
schon eher

dafür einfach 
this.button = new ...
durch
this.button[k] = new ...
ersetzen und this.button müsste ein passendes Array sein


----------



## siroFranz (7. Mrz 2007)

geht das andersrum nicht=?


----------



## SlaterB (7. Mrz 2007)

meinst du damit meine Bemerkung zu deinem Satzbau (bei Zufriedenheit mit meiner Antwort)
oder hast du noch irgendwelch inhaltlichen Fragen zu Java?....

schön knapp antworten..


----------



## siroFranz (7. Mrz 2007)

z.B. object[] blubb = {"Handball", "Fußball", "Basketball"};

for(int i=0; i<object.length;i++){
JButton objekt_ = new JButton(object);

war mit der antwort zufrieden, hab halt interesser  nach weiteren möglichkeiten.
würde diese auch gehen?_


----------



## SlaterB (7. Mrz 2007)

in der richtigen Syntax scheint mir dies eine Möglichkeit,
im Objekt-Array kann man natürlich auch JButtons speichern und den Namen holst du rechtzeitig heraus,

merkwürdig, aber funktioniert


```
Object[] blubb = {"Handball", "Fußball", "Basketball"}; 

for(int i=0; i<blubb.length;i++){ 
   blubb[i] = new JButton(blubb[i]); 
}
```
wahrscheinlich fehlt noch ein Cast auf String beim Namen


----------



## AlArenal (7. Mrz 2007)

Außerdem fehlt an erster Stelle der String "Eishockey"


----------



## siroFranz (7. Mrz 2007)

ja gut das mit dem objekt statt blubb war jetzt gerade schnelligkeitsfehler.
aber läuft es wirklich ? testen !

Einge Frage:

Wieso klappt das den wenn ich blubb_ = new JButton() machen und wenn ich schreibe JButton blubb = new JButton....klappt es nicht.


Gruß_


----------



## SlaterB (7. Mrz 2007)

Java-Sprache..

blubb_ = new JButton() 
heißt 
"speichere neuen Button an Postion i im (vorher sauber deklatierten) Array blubb"

JButton blubb = new JButton() 
heißt 
"speichere neuen Button an Postion i im neu deklarierten Array blubb, 
ne halt, im Array blubb was als eine normale JButton-Variable deklariert ist?!, 
ach das geht nicht, also Compilerfehler"_


----------



## siroFranz (7. Mrz 2007)

ok ist ja egal kann ja auf das JButton davor verzichten, ist ja eh nicht so wichtig  

Gruß


----------



## siroFranz (7. Mrz 2007)

kreig da nur ein problem wenn ich dann schreibe


```
JToolBar.add(bsp[i] = new JButton("test"));
```


----------



## SlaterB (8. Mrz 2007)

ist das eine Frage?
bei so verschachtelten Zeilen ist eh alles verloren, 
schreibe

bsp_ = new JButton("test"); 
JToolBar.add(bsp);_


----------



## siroFranz (8. Mrz 2007)

aber warum wird immer verwirrender für mich
geht aber nicht
krieg immer die meldung
cannot find symbol - method add(java.lang.object)
wenn ich schreibe


```
Object[ ][ ] buttonBar    = {{"img/neuesDokument.jpg", "img/oeffnen.jpg", "img/speichern.jpg", "img/drucken.jpg", "img/kopieren.jpg", "img/einfuegen.jpg", "img/ausschneiden.jpg", "img/hyperlink.jpg", "img/grafik.jpg", "img/tabelle.jpg"},
                                  {"img/bold.jpg", "img/kursiv.jpg", "img/unterstrichen.jpg"},
                                  {"Neu", "Öffnen", "Speichern", "Drucken", "Kopieren", "Einfügen", "Ausschneiden", "Hyperlink", "Grafik", "Tabelle"},
                                  {"Fett", "Kursiv", "Unterstrichen"}};  

for(int k=0; k<this.buttonBar[0].length && k<this.buttonBar[2].length; k++){
             this.buttonBar[2][k] = new JButton(new ImageIcon(String.valueOf(this.buttonBar[0][k])));
             this.toolBarOne.add(buttonBar[2][k]);
             this.toolBarOne.addSeparator(new Dimension(5, 0));
             //this.buttonBar[0][k].setToolTipText(String.valueOf(this.buttonBar[2][k]));
             //this.button.addActionListener(this);
         }
```


----------



## SlaterB (8. Mrz 2007)

in einem Array wird der JButton als Object gespeichert,
wenn du ihn da rausholst ist er nur ein Object, wie jedes andere Object auch,

ein Object kannst du nicht mit add einfügen,
da musst du z.B. auf JButton casten (so wie du vorher den Namen auf String gecastet hast, bzw. da hast du String.valueOf genommen)


----------



## siroFranz (8. Mrz 2007)

wie mach ich das den hiermit:


```
this.buttonBar[2][k].addActionListener(this);
 buttonBar[2][k].setTipText(String.valueOf(this.buttonBar[2][k]));
```


----------



## SlaterB (8. Mrz 2007)

erste Zeile wieder Casten?
speichere das Objekt unter einer anderen Variable von Typ JButton, dann hast du es bei mehreren Zugriffen leichter,

die zweite Zeile macht keinen Sinn, this.buttonBar[2][k] ist doch der Button, 
den String hast du doch schon längst überschrieben..

so, von mir nun keine Antworten mehr auf grundlegende Dinge,
lerne erst mal Java bevor du so (vergleichsweise) komplizierte Programme schreibst

ich schreibe das nicht für dich..


----------



## siroFranz (8. Mrz 2007)

```
(JButton)this.buttonBar[2][k].addActionListener(this);
```

aber das geht nicht, hab alle gecastest außer das krieg ich nicht hin ! Beim anderen ging das ja so:


```
this.toolBarOne.add((JButton)buttonBar[2][k]);
```


----------



## SlaterB (8. Mrz 2007)

```
((JButton)this.buttonBar[2][k]).addActionListener(this);
```


----------



## siroFranz (8. Mrz 2007)

achso 2klammern  :roll:  :roll: 


```
buttonBar[2][k].setTipText(String.valueOf(this.buttonBar[2][k]));
```

einzigstes prob ist noch dieser code und wie ich die dann anspreche

bei normalen Buttons nehmen ich ja einfach e.getSource(), aber das geht so ja nicht so richtig


----------



## siroFranz (8. Mrz 2007)

komm nicht mehr weiter ?
bitte hilefe irgendjemand


----------



## siroFranz (8. Mrz 2007)

? muss das projekt nächste woche in ner firma vorstellen :roll:  :roll: wo ich nen ausbildungsplatz brauche irgendwie


----------

