Button Größe einstellen klappt nicht (setBounds)

compauer

Mitglied
Java:
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
 
Zuletzt bearbeitet:
in deinem Falle erledigt die Größe der Layoutmanager. Damit du setBounds verwenden kannst, musst du das Layout auf null stellen.
Java:
frame.setLayout(null);
 
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.
 
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));
 
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.
 
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.
 
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.
 

Zurück
Oben