array Button listener
-
Moin,
Ich hab da nen Problem.
Ich bastele an nem programm und ich mach 100 buttons.
also:private Button[][] spaltereihe_buttons = new Button[10][10];
dann Code..
for(int i = 0; i < 10; i++) { for(int l = 0; l < 10; l++) { spaltereihe_buttons[i][l] = new Button(); } }
danach:
for(int k = 0; k < 10; ) { for(int h = 0; h < 10; ) { spaltereihe_buttons[k][h].setBounds(k*25, h*25, 25, 25); spaltereihe_buttons[k][h].setLabel(""); spaltereihe_buttons[k][h].setFont(new Font("MS Sans Serif", Font.PLAIN, 13)); spaltereihe_buttons[k][h].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { spaltereihe_buttons_ActionPerformed(evt); } }); cp.add(spaltereihe_buttons[k][h]); h++; } k++; }
dann hab ich die Button inem quadrat, wie dem acuh sei, was passiert jetzt bei:
public void spaltereihe_buttons_ActionPerformed(ActionEvent evt) { //Code }
wie kann ich auf einzelne button zurückgreifen, bzw. verschiedene Einstellungen machen auf den jeweiligen Button? Kann mir da vllt jemand helfen?
Schon mal vielen dank im Vorraus!!!
-
Die Alternative die mir einfiele wäre:
spaltereihe_buttons[0][0].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { spaltereihe_buttons00_ActionPerformed(evt); } }); spaltereihe_buttons[0][1].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { spaltereihe_buttons01_ActionPerformed(evt); } }); spaltereihe_buttons[0][1].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { spaltereihe_buttons01_ActionPerformed(evt); } }); //...Das dann 100 mal? *ächts* for(int k = 0; k < 10; ) { for(int h = 0; h < 10; ) { spaltereihe_buttons[k][h].setBounds(k*25, h*25, 25, 25); spaltereihe_buttons[k][h].setLabel(""); spaltereihe_buttons[k][h].setFont(new Font("MS Sans Serif", Font.PLAIN, 13)); cp.add(spaltereihe_buttons[k][h]); h++; } k++; } //und dann noch 100 mal public void spaltereihe_buttons00_ActionPerformed(ActionEvent evt) { //Code } public void spaltereihe_buttons01_ActionPerformed(ActionEvent evt) { //Code } public void spaltereihe_buttons02_ActionPerformed(ActionEvent evt) { //Code } /* . . . */
Aber das is mir nen bissle zu lang...
Wenns nur so geht dann brech ich mein vorhaben ab...
-
DerMitDenButton schrieb:
Wenns nur so geht dann brech ich mein vorhaben ab...
Ne, geht auch anders. Denk nach!
-
Ähh...
Danke für den Hinweis nachzudenken, ehrlich guter Tipp.
Ich kann ja mal meine Fehlgeschlagenen Versuche posten, weil mir jetzt, trotz Denken, nichts einfällt.for(int k = 0; k < 10; ) { for(int h = 0; h < 10; ) { spaltereihe_buttons[k][h].setBounds(k*25, h*25, 25, 25); spaltereihe_buttons[k][h].setLabel(""); spaltereihe_buttons[k][h].setFont(new Font("MS Sans Serif", Font.PLAIN, 13)); spaltereihe_buttons[k][h].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { spaltereihe_buttons[k][h]_ActionPerformed(evt); } }); cp.add(spaltereihe_buttons[k][h]); h++; } k++; }
Naja, wie soll man auch auf die einzelnen Buttons zurückgreifen können!?
Und dann noch mit Parametern:for(int k = 0; k < 10; ) { for(int h = 0; h < 10; ) { spaltereihe_buttons[k][h].setBounds(k*25, h*25, 25, 25); spaltereihe_buttons[k][h].setLabel(""); spaltereihe_buttons[k][h].setFont(new Font("MS Sans Serif", Font.PLAIN, 13)); spaltereihe_buttons[k][h].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { spaltereihe_buttons[k][h]_ActionPerformed(evt, int.class, int.class); //keine Ahnung warum } //"class", aber der }); //Compiler sagts... cp.add(spaltereihe_buttons[k][h]); h++; } k++; } /* . . . */ public void spaltereihe_buttons[k][h]_ActionPerformed(ActionEvent evt, 0, 0) { //Code }
Kommt mir, abgesehen davon dass es nicht funktioniert, auch recht Komisch vor...
-
public void actionPerformed(ActionEvent evt) { Button button = (Button)evt.getSource(); ...mach was mit button... }
-
Äh, sei mir nich Böse, aber um ehrlich zu sein weiß ich nicht genau was du damit meinst...,
soll ich beier klick-methode erst den Button zuweisen? und wenn ja, dann wie genau, ich weiß ja nich welcher
der gewollte ist!?
Wär nett noch ein paar erläuternde Worte dazu, ich bin kein Profi musst du wissen...
-
evt.getSource() liefert dir den Button zurück, der das Event ausgelöst hat. Den wie gezeigt in einer Referenz zwischenspeichern und dann damit arbeiten.