Problem mit Ausrichtung

sisela

Erfahrenes Mitglied
Hallo Leute,

ich habe ein kleines Problem mit der Ausrichtung und vieleicht auch mit den Layoutmanagern allgemein. Also ich will hier einfach ein Label mittig platzieren und darunter ein Textfeld.

z.B. so
........Ich bin ein Label
.....===============
.....| ich bin ein Textfeld |
.....===============

Diese beide Objekte sollen in ein JPanel gepackt werden, names contentPanel. Leider ist beim BoxLayout das Label immer ein wenig nach Links verschoben und die TextArea bzw. Scrollpane hat keine bestimmte Größe, sondern füllt den gesamten Raum aus.
Habe schon so viel ausprobiert aber alles will nicht klappen. Es soll doch alles nur mittig sein. :(

Code:
        JLabel headline = new JLabel(label);
    	headline.setFont(new Font("Serif", Font.BOLD, 24));
    	    	
    	JTextArea textArea = new JTextArea();
    	String textAreaContent= "Hallo meine kleine TexteArea";
    	textArea.setText(textAreaContent);
    	   	
    	JScrollPane sp = new JScrollPane(textArea);
    	sp.setSize(300,400);
    	
    	JPanel contentPanel = new JPanel();
    	contentPanel.setBorder(BorderFactory.createEtchedBorder());
    	contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
    	
    	contentPanel.add(headline);
    	contentPanel.add(sp);
    	
    	App.weiteresContentPanel.removeAll();
    	App.weiteresContentPanel.add(contentPanel);
    	App.frame.setVisible(true);

Vielen Dank für Eure Hilfe...
 
Mein Tipp:
Auch wenn es anfangs etwas mühsam ist, sich damit zurecht zu finden: Benutze ein GridBagLayout. Damit funktionieren alle Ausrichtungen und Platzierungen. Alle anderen mitgelieferten Layouts stoßen früher oder später an ihre Grenzen. Für anfangs einfache Anforderungen genügt schon mal ein BorderLayout oder GridLayout, aber die kleinsten Änderungen wie z.B. Ausrichtungen und korrekte Platzierungen können die einfachen Layouts meist nicht mehr erfüllen.
 
Hi Snape,

also habe inzwischen was mit dem GridBagLayout versucht. Ich fand es zwar anfangs immer abschreckend aber wenn man die ganzen constrains.xxx verstanden hat, dann wird auch alles so auf dem Bildschirm so angezeigt, wie man es will.
Allerdings finde ich das für eine umfangreich GUI einfach zu umständlich und unübersichtlich (vom code her).
Gibt es eigentlich noch weitere Alternativen, wie sieht es damit aus etwas direkt zu platzieren?

Gruß
 
sisela hat gesagt.:
Hi Snape,

also habe inzwischen was mit dem GridBagLayout versucht. Ich fand es zwar anfangs immer abschreckend aber wenn man die ganzen constrains.xxx verstanden hat, dann wird auch alles so auf dem Bildschirm so angezeigt, wie man es will.

Jo.

Allerdings finde ich das für eine umfangreich GUI einfach zu umständlich und unübersichtlich (vom code her).

Man kann doch alles schön gliedern und in Blöcke legen. Es ist nicht notwendig, ein Label zu erstellen, dann dem Panel oder der ContentPane hinzuzufügen, dann noch ein Label erstellen, wieder hinzufügen usw. Erst alle Komponenten erstellen und dann in einem Rutsch hinzufügen macht die Angelegenheit etwas übersichtlicher.
Was auch sinnvoll ist: Mehrere Panel zu verwenden. Z.B. ein Panel für den Kopfbereich, ein Panel für eine Tabelle und ein Panel für die Buttons unten.

Gibt es eigentlich noch weitere Alternativen, wie sieht es damit aus etwas direkt zu platzieren?

Gruß

Ich weiß nur von einer weiteren Alternative, die genau so flexibel sein soll: TableLayout. Habe ich aber noch nie benutzt und ist auch nicht fester Bestandteil der Java Standardklassenbibliothek.
Was meinst Du mit "direkt platzieren"?
 
Zurück