# Anordnen von Buttons im BorderLayout



## StefanG (6. Dez 2010)

Hallo,

wie kann ich in einem Bestandteil meines Border Layouts Buttons untereinander anordnen?
Nach meinem derzeitigen Code stehen die Buttons nebeneinander:


```
public void buildLineStart() {
		JButton btnOeffnenLineStart = new JButton("Öffnen");
		btnOeffnenLineStart.addActionListener(this);
		
		JButton btnSpeichernLineStart = new JButton("Speichern");
		btnSpeichernLineStart.addActionListener(this);
		
		JButton btnDruckenLineStart = new JButton("Drucken");
		btnDruckenLineStart.addActionListener(this);
		
		this.add(btnOeffnenLineStart);
		this.add(btnSpeichernLineStart);
		this.add(btnDruckenLineStart);
	}
```


----------



## daubor (6. Dez 2010)

Du musst dem BorderLayout sagen, wo die Komponenten hinkommen...

In deinem Falle:

```
this.add(btnOeffnenLineStart, BorderLayout.NORTH);
this.add(btnSpeichernLineStart, BorderLayout.CENTER);
this.add(btnDruckenLineStart, BorderLayout.SOUTH);
```


----------



## StefanG (6. Dez 2010)

Das funktioniert nicht. Die angegebene Methode instanziert den linke Bereich des Border Layouts. In diesem Bereich sollen die Buttons untereinander angeordnet werden.


----------



## daubor (6. Dez 2010)

Man kann die Layouts auch schachteln...also zB der linke/west - Teil eines BorderLayouts beinhaltet ein Panel, welches über ein GridLayout verfügt.


```
JPanel gridPanel = new JPanel();
gridPanel.setLayout(new GridLayout(0,1));

 gridPanel.add(btnOeffnenLineStart);
 gridPanel.add(btnSpeichernLineStart);
 gridPanel.add(btnDruckenLineStart);

this.add(gridPanel);
```

Bitte schau Dir mal die Java-Hilfe zum Thema Layout-Manager an.


----------



## ARadauer (6. Dez 2010)

> In diesem Bereich sollen die Buttons untereinander angeordnet werden.


kein BorderLayout ;-)


----------



## Haave (6. Dez 2010)

Ginge es nicht mit BoxLayout? Das ist doch afaik so gestaltet, dass jedes weitere Element in eine neue Zeile kommt, auch wenn rechts neben dem vorigen Element noch Platz gewesen wäre.
Du machst also ein JPanel mit BoxLayout, haust da alle Buttons rein und gibt dann dem Frame das JPanel mit BorderLayout.WEST oder wo du es eben haben möchtest.


----------



## StefanG (6. Dez 2010)

```
public void buildLineStart() {
		JPanel gridPanel = new JPanel();
		gridPanel.setLayout(new GridLayout(0,1));
		
		ImageIcon btnIconOeffnen = new ImageIcon("icon/NewDocument.png");
		ImageIcon btnIconSpeichern = new ImageIcon("icon/SaveDocument.png");
		ImageIcon btnIconDrucken = new ImageIcon("icon/PrintDocument.png");
		
		JButton btnOeffnenLineStart = new JButton("Öffnen");
		btnOeffnenLineStart.setIcon(btnIconOeffnen);
		btnOeffnenLineStart.setToolTipText("Ein neues Dokument öffnen");
		btnOeffnenLineStart.addActionListener(this);
		
		JButton btnSpeichernLineStart = new JButton("Speichern");
		btnSpeichernLineStart.setIcon(btnIconSpeichern);
		btnSpeichernLineStart.setToolTipText("Dokument speichern");
		btnSpeichernLineStart.addActionListener(this);
		
		JButton btnDruckenLineStart = new JButton("Drucken");
		btnDruckenLineStart.setIcon(btnIconDrucken);
		btnDruckenLineStart.setToolTipText("Dokument drucken");
		btnDruckenLineStart.addActionListener(this);
		 
		gridPanel.add(btnOeffnenLineStart);
		gridPanel.add(btnSpeichernLineStart);
		gridPanel.add(btnDruckenLineStart);
		 
		this.add(gridPanel);

[/Java]

Habe das Problem jetzt so gelöst. Vielen Dank für eure Hilfe!
```


----------

