Java Button immer genauso groß wie die Form?

KingLM97

Lieutenant
🎅Rätsel-Elite ’18
Registriert
Mai 2012
Beiträge
927
Hallo,

ich versuche gerade zum ersten mal ein GUI in Java. Klappt soweit so gut. Nur dass mein Button immer so groß ist wie die Form!
Der Code:
Code:
package me.Lukas97.Pinger;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Frame extends JFrame{
	
	JButton ping;

	public Frame(){
		setVisible(true);
		setSize(500, 250);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocation(500, 500);
		setTitle("Ping Tool");
		setResizable(true);
		
		ping = new JButton("Anpingen");
		ping.setLocation(250, 125);
		ping.setSize(250, 250);
		add(ping);
	}
}
Wenn ich es starte, wird der Button immer so groß wie das Fenster selbst?


und



Ich benutze Java 7 und Eclipse Juno.
Was habe ich falsch gemacht?
 
Hallo,
für eigene Anpassungen der Größe und Location musst du das layout auf null setzen.
this.setLayout(null);
 
Du hast nichts falsch gemacht. Der Default-Windowmanager in Java ist das BorderLayout. Wenn du eine Komponente hinzufügst, wird es immer zentriert mit maximaler Ausdehnung zum Fenster hinzugefügt. Mach dich mal mit den Windowmanagern vertraut, dann wirst du das Problem sicher schnell lösen können. Mein Favorit als Windowmanager ist FormLayout http://www.jgoodies.com/. Der lässt sich in einfach Tabellenform konfigurieren und ermöglicht auch recht komplizierte Designs.
 
soul0ry schrieb:
für eigene Anpassungen der Größe und Location musst du das layout auf null setzen.

Diese Aussage ist grundfalsch! Wie von anderen Postern schon angemerkt, ist der richtige Weg die Verwendung eines passenden Layoutmanagers! Es wird an vielen Stellen darauf hingewiesen, dass eine absolute Positionierung schlechter Stil ist! Außerdem ist die Umsetzung relativ schwierig. Es gibt Anwendungsfälle dafür, aber jemand der die ersten Schritte in der Swing-Welt unternimmt, wird davon wohl kaum tangiert werden.

http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

Swing ist übrigens eher als Legacy anzusehen. JavaFX ist das moderne Toolkit von Oracle. SWT eine gute Alternative, wenn man einen nativen Look haben möchte.

Ich würde auch den Einsatz eines alternativen Layout-Managers empfehlen. Allerdings bevorzuge ich mittlerweile MigLayout. Neben anderen Vorteilen unterstützt MigLayout alle drei großen Toolkits (eben Swing, SWT und JavaFX), wodurch ein Layout portabel wird, was praktisch ist, will man sich mit allen Toolkits beschäftigen.
 
Zurück
Oben