# Button benennen via Variable?



## blumenpeter (2. Feb 2010)

Hi,

ich baue gerade ne GUI und habe dort einige Button drinne.
Diese Button (9 stück) verbrauchen ne Menge Code, den ich gerne umgehen würde.

Momentaner Java Code:

```
b1 = new JButton("   1  ");
                b1.addActionListener(this);
                b1.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b1.setMaximumSize(new Dimension(Integer.MAX_VALUE, b1.getMaximumSize().height));
                b2 = new JButton("   2  ");
                b2.addActionListener(this);
                b2.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b2.setMaximumSize(new Dimension(Integer.MAX_VALUE, b2.getMaximumSize().height));
                b3 = new JButton("   3  ");
                b3.addActionListener(this);
                b3.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b3.setMaximumSize(new Dimension(Integer.MAX_VALUE, b3.getMaximumSize().height));
                b4 = new JButton("   4  ");
                b4.addActionListener(this);
                b4.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b4.setMaximumSize(new Dimension(Integer.MAX_VALUE, b4.getMaximumSize().height));
                b5 = new JButton("  Ja ");
                b5.addActionListener(this);
                b5.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b5.setMaximumSize(new Dimension(Integer.MAX_VALUE, b5.getMaximumSize().height));
                b6 = new JButton("Nein");
                b6.addActionListener(this);
                b6.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b6.setMaximumSize(new Dimension(Integer.MAX_VALUE, b6.getMaximumSize().height));
                b7 = new JButton("Speicehrn");
                b7.addActionListener(this);
                b7.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b7.setMaximumSize(new Dimension(Integer.MAX_VALUE, b7.getMaximumSize().height));
                b8 = new JButton("Laden");
                b8.addActionListener(this);
                b8.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b8.setMaximumSize(new Dimension(Integer.MAX_VALUE, b8.getMaximumSize().height));
                b9 = new JButton("   5  ");
                b9.addActionListener(this);
                b9.setAlignmentX(JButton.CENTER_ALIGNMENT);
                b9.setMaximumSize(new Dimension(Integer.MAX_VALUE, b9.getMaximumSize().height));
                b9.setVisible(false);
```

Meine Idee ist es, per while schleife in einer neuen Methode automatisch die Button zu createn, sodass nur 4 Zeilen Code für alle Buttons benötigt werden (b9 ist ausgeschlossen).



```
public void nameMethode(int zaehlerb){

                this.zaehlerb = zaehlerb;
                this.b = "b";
                while(i<10){


                   ausgabebutton = this.b + this.zaehlerb;
                   //System.out.println(ausgabebutton); // für testzwecke
                   this.zaehlerb++;
                   i++;
                
                ausgabebutton  = new JButton("   1  ");  /// ab hier funktioniert es nicht!
                ausgabebutton .addActionListener(this);
                ausgabebutton .setAlignmentX(JButton.CENTER_ALIGNMENT);
                ausgabebutton .setMaximumSize(new Dimension(Integer.MAX_VALUE, b1.getMaximumSize().height));
                
                }
        }
```

Danke schonmal
gruß


----------



## SuperSeppel13 (2. Feb 2010)

Versuchs mal mit nem JButton-Array.


```
int anzahl = 10;
JButton[] buttons = new JButton[anzahl];

for(int i=0; i<anzahl; i++){
    buttons[i] = new JButton(""+(i+1));
    buttons[i] = addActionListener(this);
    //weitere Einstellungen...
}
```


----------



## Sempah (2. Feb 2010)

Falls ausgabebutton ein JButton sein soll, würdest du doch soo ehh jedesmal den JButton überschreiben.
Ich kenne es aus dem .net Umfeld z.B. so, dass man eine generische List vom Typ JButton erstellen würde.

Z.B: so (nicht getestet):


```
List<JButton> list = new ArrayList<JButton>();

for (int i = 0; i < 5; i++) {
   list.add(new JButton(String.valueOf(i)));
}
```


----------



## Deros (2. Feb 2010)

hört sich eher so an als bräuchte er ne buttonfactory
als was in Richtung:


```
public JButton ButtonFactory(String buttonName){
		JButton button = new JButton(buttonName);
		 button.addActionListener((ActionListener) this);
		 button.setAlignmentX(JButton.CENTER_ALIGNMENT);
		 button.setMaximumSize(new Dimension(Integer.MAX_VALUE, button.getMaximumSize().height));
		return button;
		}
	
public class Blub{
		
	JButton b1=ButtonFactory("   1   ");
	JButton b2=ButtonFactory("   2   ");
	JButton b3=ButtonFactory("   3   ");
....
		
}
```

natürlich kann man die Buttons dann in ein Array werfen so man lust zu hat


----------



## blumenpeter (2. Feb 2010)

SuperSeppel13 hat gesagt.:


> Versuchs mal mit nem JButton-Array.
> 
> 
> ```
> ...



leider geht das inZeile 6 nicht...
es kommt immer folgender Fehler: 

cannot find symbol
symbol: method addActionListener(gui20.GUI)
location: class gui20.GUI

evtl wer ne idee warum?


----------



## blumenpeter (2. Feb 2010)

Deros hat gesagt.:


> hört sich eher so an als bräuchte er ne buttonfactory
> als was in Richtung:
> 
> 
> ...



DAS WARS 

Danke!

nice nice nice


----------



## SuperSeppel13 (2. Feb 2010)

> leider geht das in Zeile 6 nicht...



'tschuldigung, habe da auch kopmletten Schwachsinn geschrieben.
Es muss natürlich lauten 
[JAVA=6]
buttons_.addActionlistsner(this);
[/code]_


----------

