# JButton über Schleife erstellen



## spidermobile (12. Apr 2004)

Hallo,
ich stolpere derzeit von einer Unwissenheit in die Andere  . Ich möchte die Buttons A-Z über eine Schleife erzeugen.

```
final String[] abc = {"A","B","C","D","E","F","G","H","I","J","K","L","M",
                              "N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
...

for(int i=0; i < abc.length;i++){
	JButton abc[i] = new JButton(abc[i]);
	abc[i].addActionListener(this);
	pane.add("West", abc[i]);
}
```

Eclipse unterkringelt mir das i bei JButton abc_ mit dem Hinweis:
"Syntaxfehler bei Token "i", "]" erwartet.

Was habe ich falsch gemacht?_


----------



## Beni (12. Apr 2004)

Das hier "JButton abc_ = new JButton(abc);" ist auch kein Java-Syntax.  :wink: 

Einfacher geht es, wenn du dem Button einen eigenen Namen gibst:


		Code:In die Zwischenablage kopieren


for(int i=0; i < abc.length;i++){
   JButton button = new JButton(abc[i]);
   button.addActionListener(this);
   pane.add("West", button);
}

_


----------



## spidermobile (12. Apr 2004)

Guten Morgen Beni,

ich denke, das ist nicht ganz das, was ich erreichen will. Ich möchte 26 Buttons erzeugen (A-Z). Diese möchte ich später mit action Event abfragen. Aus diesem Grund muss doch jeder JButton eindeutig identifiziert werden, oder?

Mit Deiner Lösung bekomme ich einen Button mit dem letzten Wert "Z". Aber Wahrscheinlich liegt es mal wieder an mir, und ich habe es noch nicht richtig verstanden.


----------



## Beni (12. Apr 2004)

*1. Möglichkeit*

Du kannst eigentlich jedem Button ein "Command" zuordnen.

```
JButton button = ...
button.setActionCommand( abc[i] );
```

... und dieses Command später im "actionPerformed" wieder abrufen:

```
public void actionPerformed( ActionEvent e ){
  String command = e.getActionCommand();
  ...
}
```
Das "command" ist jetzt ein String "a", "b", etc.


Ich denke, du musst ein anderes Layout wählen, um alle Buttons sehen zu können, am einfachsten GridLayout:

```
JPanel panel = new JPanel( new GridLayout( abc.length, 1 ) );
for( int i = 0, n = abc.length; i++ ){
  JButton button = new JButton( abc[i] );
  button.setActionCommand( abc[i] );
  button.addActionListener( this );
  panel.add( button );
}

pane.add( "West", panel );
```


*2. Möglichkeit*
Wenn du allerdings die Buttons an einer anderen Stelle benötigst, musst du einfach einen Array aus Buttons herstellen.

```
JButton[] buttons = new JButton[ abc.length ];

...

for( ... )
  buttons[i] = new JButton( abc[i] );
```

mfg Beni


----------



## spidermobile (12. Apr 2004)

Hi,

nach der Möglichkeit 2. habe ich gesucht. Die 1. Variante gefällt mir allerdings besser. 

Ich danke Dir


----------

