LayoutProblem

Status
Nicht offen für weitere Antworten.

MPW

Top Contributor
Hallihallöle,

ich möchte ein BoxLayout nehmen um in einem JApplet mehrere JPanels untereinander zu ordnen.
GridLayout geht nicht, da die verschiedenen JPanels unterschiedlich hoch sind.
Das klappt mit dem BoxLayout auch schon wunderbar, es hackt nur beim setzen der Alignments, wo muss ich das machen? Im Tutorial von Sun steht, dass man damit einstellen kann, ob der Komponenten am linken oder rechten Rand sind(ich verwende BoxLayout von oben nach unten) oder gar in der Mitte, da mein eines Label da so dumm in der Gegend rumschwierrt...

Also, ich muss nur die JComponent Alignment_LEFT setten, für das JLabel Anmeldeformular, aber wo?
Das Alignment ist ja ein float, ich kann das nirgends übergeben und es gibt auch keine setMethode, immer nur get...

Kann mir jemannd helfen?

Code:
import javax.swing.JApplet;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.GridLayout;
import java.io.Serializable;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.BoxLayout;
import java.awt.Component;

public class Anmeldescript extends JApplet implements Serializable {
	static final long serialVersionUID = 2;

	public void init() {
		JPanel w = new JPanel();
		w.setLayout(new BoxLayout(w, BoxLayout.PAGE_AXIS));
		w.add(new JLabel(Component.LEFT_ALIGNMENT, "Anmeldeformular zum Projekt Tech-No"));
		w.add(createOberstesPanel());
		add(w);
		setSize(350, 500);
		setVisible(true);
	}
	JPanel createOberstesPanel() {
		JPanel p = new JPanel(new GridLayout(4, 2, 10, 10), Component.CENTER_ALIGNMENT);
		String s[] = {"Gruppenname:", "Name des Gruppensprechers", "Email des Gruppensprechers:", "Emailadresse bestätigen" };
		for (int i = 0; i < s.length; i++) {
			p.add(new JLabel(s[i], SwingConstants.RIGHT));
			p.add(new JTextField(20));
		}
		return p;
	}

}
 
G

Guest

Gast
Schau doch in der API-Doku nach, was es für Konstruktorvarianten gibt.
Das hier ist falsch (sicherlich kriegst du es nicht mal compiliert)
Code:
new JLabel(Component.LEFT_ALIGNMENT, "Anmeldeformular zum Projekt Tech-No")
...
new JPanel(new GridLayout(4, 2, 10, 10), Component.CENTER_ALIGNMENT);
Einmal machs du es ja richtig.
Code:
new JLabel(s[i], SwingConstants.RIGHT)
 

MPW

Top Contributor
ähm, hallo, wer von uns muss hier eigentlich in die Api gucken?

Das sind doch zwei völlig verschiedene Sachen, das eine beschreibt die innere ausrichtung des Labels.
Ich will aber die äußere Ausrichtung in dem BoxLayout verändern.
In der API steht, dass man dies über die Konstante Component Alignment macht.


Du hast dir wahrscheinlicih meinen Quellcode nicht richtig angeguckt, compilir ihn mal, ich will, dass das oberste Label links ist und nicht irgendwo komisch in der Mitte hängt.

^^Und wo wir bei API sind, da steht doch beim BoxLayout ich soll das so machen, aber wie denn?
 
R

Roar

Gast
MPW hat gesagt.:
ähm, hallo, wer von uns muss hier eigentlich in die Api gucken?
Du hast dir wahrscheinlicih meinen Quellcode nicht richtig angeguckt, compilir ihn mal, ich will, dass das oberste Label links ist und nicht irgendwo komisch in der Mitte hängt.
du. dein quellcode lässt sich nicht kompilieren er ist falsch, wie gast gesagt hat!

um dein zeugs links zu haben sag p.setAlignmentX(Component.LEFT_ALIGNMENT);

aber warum ist die klasse serializable :autsch: ?
 

MPW

Top Contributor
die Klasse ist Serializable weil meine Entwicklungsumgebung/besser gesagt Editor nicht zum Quelltext zurückspringt, wenn dort warnings stehen^^


danke für den Tipp das mit setAlignment klappt.

Aber warum steht die Methode nicht inner API, oder bin ich blind?
 
B

Beni

Gast
Nöööö, guck dir den Baum an:

java.lang.Object
extended by java.awt.Component
extended by java.awt.Container
extended by javax.swing.JComponent
extended by javax.swing.JPanel

Da gibt es viele Möglichkeiten, z.B. die JComponent!
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben