# Button Größe einstellen klappt nicht (setBounds)



## compauer (9. Apr 2012)

```
package de.proglabor.aufgabe3.gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;

import de.proglabor.aufgabe3.Spiel;

public class gui{

	JFrame frame;
	JButton label1Button ;
	
	public static void main(String[] args) {
		
		gui grafik = new gui();
		grafik.start();
		
	}
	
	
	public void start() {

		frame = new JFrame("TEST");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
                label1Button = new JButton("Drück mich");
		JButton label1Button = new JButton ("Label1");

		
                label1Button.setBounds(0, 0, 50, 50);
		frame.add(label1Button);

		frame.setSize(500, 500);
		frame.setVisible(true);

	}

}
```

Meine Frage: Hier nimmt der Button das ganze Fenster ein, obwohl ich mit setBounds die Größe und die Position bestimmt habe. Wo liegt das Problem?

Viele Grüße
compauer


----------



## Fab1 (9. Apr 2012)

in deinem Falle erledigt die Größe der Layoutmanager. Damit du setBounds verwenden kannst, musst du das Layout auf null stellen.

```
frame.setLayout(null);
```


----------



## njans (9. Apr 2012)

das null-Layout sollte man aber lieber mal zurück in die Grube packen, in die es gehört. Da macht ein sinnvoller LayoutManager mehr Sinn.


----------



## Marco13 (9. Apr 2012)

Stimmt, null-Layout ist für sowas immer schlecht. Statt setBounds muss man setPreferredSize verwenden, damit der LayoutManager das berücksichtigt

label1Button.setPreferredSize(new Dimension(50, 50));


----------



## L-ectron-X (9. Apr 2012)

Nur wird das in diesem Fall auch nicht helfen, weil der LayoutManager (in diesem Fall BorderLayout) die PreferredSize ignoriert. Es muss schon ein passender LayoutManager gewählt werden.
http://www.java-forum.org/bilder-gu...standard-java-api-externer-layoutmanager.html


----------



## compauer (9. Apr 2012)

Was muss ich nun konkret machen, damit die Befehle nicht ignoriert werden?
setPreferredSize funktioniert auch nicht. frame.setLayout(null) kommt das Programm nicht zum Ausführen.


----------



## vanny (9. Apr 2012)

frame.setLayout(new FlowLayout()); zBsp. und dann mit der PreferredSize arbeiten.

PS: Dein Knoopf wird in der Mitte sitzen .... schau dir die LayoutManager an, dann bekommste das auch gelöst.


----------



## compauer (10. Apr 2012)

Ich hatte zuvor auch das frame.setLayout(null); an der falschen Stelle. Es funktionieren beide Varianten. Danke :toll:


----------



## Marco13 (10. Apr 2012)

L-ectron-X hat gesagt.:


> Nur wird das in diesem Fall auch nicht helfen, weil der LayoutManager (in diesem Fall BorderLayout) die PreferredSize ignoriert. Es muss schon ein passender LayoutManager gewählt werden.
> http://www.java-forum.org/bilder-gu...standard-java-api-externer-layoutmanager.html



Hab' auch nochmal im verlinkten Text zu BorderLayout geschaut. Es wird IMHO nicht vollkommen klar, dass die NORTH/SOUTH bzw. EAST/WEST schon die PreferredSize berücksichtigen, aber eben jeweils nur die Höhe bzw. Breite. Aber im CENTER stimmt's das füllt ggf. alles aus.


----------

