dynamisch erzeugte buttons

Status
Nicht offen für weitere Antworten.

siroFranz

Bekanntes Mitglied
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 ???


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


Gruß
 
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
 
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
 
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..
 
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?
 
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

Code:
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
 
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ß
 
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"
 
kreig da nur ein problem wenn ich dann schreibe

Code:
JToolBar.add(bsp[i] = new JButton("test"));
 
ist das eine Frage?
bei so verschachtelten Zeilen ist eh alles verloren,
schreibe

bsp = new JButton("test");
JToolBar.add(bsp);
 
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

Code:
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);
         }
 
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)
 
wie mach ich das den hiermit:

Code:
this.buttonBar[2][k].addActionListener(this);
 buttonBar[2][k].setTipText(String.valueOf(this.buttonBar[2][k]));
 
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..
 
Code:
            (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:

Code:
this.toolBarOne.add((JButton)buttonBar[2][k]);
 
Code:
            ((JButton)this.buttonBar[2][k]).addActionListener(this);
 
achso 2klammern :roll: :roll:

Code:
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
 
? muss das projekt nächste woche in ner firma vorstellen :roll: :roll: wo ich nen ausbildungsplatz brauche irgendwie
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben