Swing Komponenten werden nicht angezeigt

morphesus

Mitglied
Servus Leute =)

Kurze Frage meinerseits. Ich entwickle gerade eine GUI und mich wundert, dass meine Komponenten nicht angezeigt werden. Laut mehrerer Quellen müsste allerdings alles korrekt sein.

Vielleicht seht ihr ja den Fehler =)
Java:
package org.morphesus.cbs.ui;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class UILogin extends JFrame {
	private static final long serialVersionUID = 5734903951548686864L;
	
	// Components
	private JLabel label_username;
	private JLabel label_password;
	
	private JTextField     text_username;
	private JPasswordField text_password;
	
	private JButton button_login;
	private JButton button_abort;

	public UILogin() {
		super("CodeBot Login");
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		this.getContentPane().setLayout(null);
		this.init();

		this.setResizable(false);
		this.setSize(400, 200);
		this.setVisible(true);
	}
	
	private void init() {
		// Init components
		this.label_username = new JLabel("Username:");
		this.label_password = new JLabel("Password:");
		
		this.text_username  = new JTextField();
		this.text_password  = new JPasswordField();
		
		this.button_login   = new JButton("Login");
		this.button_abort   = new JButton("Abort");
		
		// Justify components
		this.label_username.setLocation(10, 10);
		this.label_password.setLocation(10, 30);
		
		// Add components
		this.getContentPane().add(this.label_username);
		this.getContentPane().add(this.label_password);
		
		this.getContentPane().add(this.text_username);
		this.getContentPane().add(this.text_password);
		
		this.getContentPane().add(this.button_login);
		this.getContentPane().add(this.button_abort);
		
		this.pack();
	}
}

Das Fenster erzeuge ich einfach mittels
Java:
UILogin login = new UILogin();

Danke schonmal im Voraus =)
Grüße - Morph 8)
 
Du benutzt das "NullLayout", da müssen die Dimensionen der Komponenten vorgegeben werden.
setBounds()

NullLayout ist aber fast immer die schlechteste Wahl.
 
Danke erstmal für deine Antwort =)

Mhm, ok das wusste ich noch gar nicht ... Welches Layout wäre denn empfehlenswert? Ich hatte mir alle verfügbaren einmal angesehen, war aber nur so mehr oder weniger zufrieden ... Welche Alternativen gibt es?

Grüße - Morph 8)
 
Jeder LayoutManager verfolgt eine andere Strategie der Anordnung und Dimensionierung von Komponenten. Oftmals werden LayoutManager auch mittels JPanels verschachtelt, um die gewünschte Anordnung zu erreichen. Die mächtigsten LayoutManager sind GridBagLayout und GroupLayout. Allerdings erfordert deren Handhabung auch etwas Übung.
 
Ok, die Handhabung der Layouts sollte kein Problem darstellen, ich programmiere ja zum Glück nicht erst seit gestern Java =P
Das mit den JPanels ist noch ein heißer Tipp gewesen, ich denke das sollte genügen =)

Danke dir auf jeden Fall! 🙂
Grüße - Morph 8)
 
Danke dir, aber ich hab schon verstanden, was du meinst und wie es funktioniert 😉
Wie gesagt: Ich programmiere auch nicht erst seit gestern Java ^^ Nur man hat halt immer irgendwo nochmal ne Lücke ... Und da ich bevorzugt Konsolenanwendungen schreibe (Da die meisten Anwendungen Serveranwendungen sind) arbeite ich nicht so oft mit GUIs ^^

Grüße - Morph 8)
 
[TIPP]Versuch dich mal mit JGoodies FormLayout, ist ebensomächtig (evtl. sogar mächtiger) wie GridBagLayout und für die meisten Leute schneller zu lernen![/TIPP]
 
Super Tipp! Danke dir, das Framework sieht klasse aus! =)
Werd ich auf alle Fälle bei nächster Gelegenheit austesten!

Grüße - Morph 8)
 

Zurück
Oben