Ausrichtung im JPanel

Status
Nicht offen für weitere Antworten.
C

Camino

Gast
Hallo,

ich habe in einer Anwendung ein JPanel mit einem GridBagLayout versehen, um ein Formular darzustellen. Wenn ich nun die einzelnen Elemente hinzufüge, dann wird mir das ganze Formular in diesem JPanel zentriert angezeigt, sowohl horizontal als auch vertikal. Wie kann ich die das ganze Formular in dem JPanel so ausrichten, dass es ganz oben und links beginnt? Hab irgendwie nichts gefunden. Das JPanel selbst liegt in dem CENTER-Bereich eines anderen JPanels mit BorderLayout. Liegt es vielleicht daran und ich muss noch einen anderen LayoutManager "zwischenschalten".

Danke
Camino
 

L-ectron-X

Gesperrter Benutzer
Camino hat gesagt.:
Wie kann ich die das ganze Formular in dem JPanel so ausrichten, dass es ganz oben und links beginnt?
Mit
Code:
constraints.anchor = GridBagConstraints.NORTHWEST;

oder
Code:
constraints.anchor = GridBagConstraints.FIRST_LINE_START

Falls das nicht reicht, fehlt noch die Gewichtung (weightx/weighty).
 
C

Camino

Gast
geraldf hat gesagt.:

Das mit den GridBagConstraints war wohl der richtige Tipp. Hab es auch nach der Anleitung im genannten Posting geschafft, das Formular vertikal nach NORTH auszurichten. Nur mit der Ausrichtung an den linken Rand, also horizontal, klappt es noch nicht so ganz. Muss mich wohl noch näher mit anchor und weightx/weighty befassen. Danke jedenfalls mal für diese Anregung...

Camino
 
C

Camino

Gast
L-ectron-X hat gesagt.:
Mit
Code:
constraints.anchor = GridBagConstraints.NORTHWEST;

oder
Code:
constraints.anchor = GridBagConstraints.FIRST_LINE_START

Falls das nicht reicht, fehlt noch die Gewichtung (weightx/weighty).

Muss die Angabe für anchor (=NORTHWEST) für jedes Element im Formular angegeben werden?
 

geraldf

Mitglied
Durch Zuweisungen an weightx/weighty ergeben sich Zeilen und Spalten mit einzelnen Zellen (vgl. Excel). Innerhalb dieser Zellen kannst du mit anchor die Ausrichtung NACH BEDARF festlegen.

Beste Grüße
Gerald
 
C

Camino

Gast
geraldf hat gesagt.:
Durch Zuweisungen an weightx/weighty ergeben sich Zeilen und Spalten mit einzelnen Zellen (vgl. Excel). Innerhalb dieser Zellen kannst du mit anchor die Ausrichtung NACH BEDARF festlegen.

Beste Grüße
Gerald

Ich versteh das mit weightx/weighty zwar immer noch nicht so ganz, aber durch Ausprobieren mit verschiedenen Werten hab ich jetzt wenigstens ein Ergebnis hingekriegt, wie ich es haben wollte. Ich hab eigentlich ein Formular mit 2 Spalten: 1. Spalte stehen die Labels und in der 2. Spalte die Textfelder. Die 1. Spalte hatte ich mit anchor= NORTHWEST linksbündig gekriegt. Musste ich aber für jedes Label angeben. Die 2. Spalte war dann aber rechtsbündig. Ich hab einfach den Wert von weightx des letzten Elements der 2. Spalte so lange erhöht (bis 20.0), bis auch die 2. Spalte an die 1. Spalte aufgeschlossen hatte. Ich dachte, die Zellen werden beim GridBagLayout mit gridx und gridy festgelegt. Was bedeutet dann die Zuweisung an weightx/weighty? Ich kapier den Vergleich mit Excel nicht so ganz.
 

L-ectron-X

Gesperrter Benutzer
Camino hat gesagt.:
Muss die Angabe für anchor (=NORTHWEST) für jedes Element im Formular angegeben werden?
Naja, es kommt darauf an, ob du immer das gleiche GridBagConstraints-Objekt zur Ausrichtung nutzt, oder immer wieder ein neues Objekt erzeugst. Es ist ja beides möglich.

Wenn du immer mit dem gleichen Objekt arbeitest, erhalten alle nachfolgenden GUI-Komponenten die gleichen Constraints, bis die Werte geändert/zurückgesetzt werden. Also brauchst du u.U. nichts als die gridx/gridy-Werte ändern bis "Bedarf" besteht, um mal geraldf's Worte zu benutzen.
 
C

Camino

Gast
L-ectron-X hat gesagt.:
Naja, es kommt darauf an, ob du immer das gleiche GridBagConstraints-Objekt zur Ausrichtung nutzt, oder immer wieder ein neues Objekt erzeugst. Es ist ja beides möglich.

Ich hab mir eine Methode geschrieben (addComponent) die für jedes Element ein neues GridBagConstraints-Objekt erstellt und dem Container zufügt. Der Methode übergebe ich alle Werte für die GridBagConstraints.
 

L-ectron-X

Gesperrter Benutzer
Camino hat gesagt.:
Was bedeutet dann die Zuweisung an weightx/weighty?
weightx und weighty legen fest, in welchem Maße sich Komponeten gegenüber anderen Komponenten im Layout ausdehnen dürfen. Je höher der Wert, um so mehr werden sie bei der Platzvergabe berücksichtigt.
Um Zellen voll auszudehnen benutzt man fill...
 

L-ectron-X

Gesperrter Benutzer
Camino hat gesagt.:
Ich hab mir eine Methode geschrieben (addComponent) die für jedes Element ein neues GridBagConstraints-Objekt erstellt und dem Container zufügt. Der Methode übergebe ich alle Werte für die GridBagConstraints.

In diesem Fall musst du für jede Komponente deine gewünschten Constraints angeben, sonst werden sie mit ihren Defaultwerten ins Layout eingebaut.

Notfalls postest du mal Code, dann kann man sich das mal angucken.
 
C

Camino

Gast
OK, vielen Dank für eure Hilfe. Hat mich ein grosses Stück weitergebracht. Bisher hatte ich viel mit dem BoxLayout herumexperimentiert. Aber so langsam werde ich wohl ein Fan vom GridBagLayout.

Camino
 
C

Camino

Gast
L-ectron-X hat gesagt.:
Notfalls postest du mal Code, dann kann man sich das mal angucken.
Kann ich gerne mal machen. Muss nur mit USB-Stick von dem anderen Computer rübertransportieren, da dieser kein Internetanschluss hat. :wink: Bin gleich wieder da...
 
C

Camino

Gast
Hab mal Ausschnitte des relevanten Codes eingefügt. Erstmal den Code für die einzelnen Komponenten:
Code:
addComponent( formularPanel, label_name,          0, 0, 1, 1,  0.0,   0.0, 0, 18, 120, 18 );
addComponent( formularPanel, textfeld_name,       1, 0, 1, 1,  0.0,   0.0, 0, 18, 200, 18 );
addComponent( formularPanel, label_vorname,       0, 1, 1, 1,  0.0,   0.0, 0, 18, 120, 18 );
addComponent( formularPanel, textfeld_vorname,    1, 1, 1, 1,  0.0,   0.0, 0, 18, 200, 18 );
addComponent( formularPanel, label_matrikelnr,    0, 2, 1, 1,  0.0,   0.0, 0, 18, 120, 18 );
addComponent( formularPanel, textfeld_matrikelnr, 1, 2, 1, 1,  0.0,   0.0, 0, 17,  60, 18 );
addComponent( formularPanel, separator,           0, 3, 2, 1,  0.0,   0.0, 0, 17, 330,  1 );
addComponent( formularPanel, label_strasse,       0, 4, 1, 1,  0.0,   0.0, 0, 18, 120, 18 );
addComponent( formularPanel, textfeld_strasse,    1, 4, 1, 1,  0.0,   0.0, 0, 17, 200, 18 );
addComponent( formularPanel, label_plz,           0, 5, 1, 1,  0.0,   0.0, 0, 18, 120, 18 );
addComponent( formularPanel, textfeld_plz,        1, 5, 1, 1,  0.0,   0.0, 0, 17,  60, 18 );
addComponent( formularPanel, label_wohnort,       0, 6, 1, 1,  0.0, 100.0, 0, 18, 120, 18 );
addComponent( formularPanel, textfeld_wohnort,    1, 6, 1, 1, 20.0, 100.0, 0, 18, 200, 18 );

und nun noch die Methode addComponent:
Code:
public void addComponent( Container cont, Component c, 
			int x, int y, 
            int width, int height, 
            double weightx, double weighty,
            int fill, int anchor,
            int dimx, int dimy ) 

	{ 
		GridBagConstraints gbc = new GridBagConstraints(); 
		gbc.fill = fill; 
		gbc.anchor = anchor;
		gbc.gridx = x; gbc.gridy = y; 
		gbc.gridwidth = width; gbc.gridheight = height; 
		gbc.weightx = weightx; gbc.weighty = weighty; 
		gbc.insets = insets;
		c.setPreferredSize(new Dimension(dimx, dimy));
		c.setMinimumSize(c.getPreferredSize());
		c.setMaximumSize(c.getPreferredSize());
		gbl.setConstraints( c, gbc ); 
		cont.add( c ); 
	}

Ach ja, GridBagLayout gbl und Insets insets wurde weiter oben im Code definiert...
 

L-ectron-X

Gesperrter Benutzer
Wenn du textfeld_wohnort horizontal die Zelle ausfüllen lässt, reicht dann für weightx ein Wert von 1.0 oder weniger.

gbc.fill = GridBagConstraints.HORIZONTAL;

oder eben den entsprechenden korrespondierenden Wert dafür.
 

geraldf

Mitglied
Hallo Camino!

Camino hat gesagt.:
Ich kapier den Vergleich mit Excel nicht so ganz.

Ich hab damit nur gemeint, dass die Fläche in Zellen wie in Excel aufgeteilt wird.
Im Gegensatz zu Excel sind die Zellenränder aber per Default unsichtbar.

Vielleicht hilft es beim Entwickeln, die Zellenränder sichtbar zu machen. Hab jetzt keinen konkreten Vorschlag dafür, ist aber sicher irgendwie möglich.

Beste Grüße
Gerald
 
C

Camino

Gast
geraldf hat gesagt.:
Vielleicht hilft es beim Entwickeln, die Zellenränder sichtbar zu machen. Hab jetzt keinen konkreten Vorschlag dafür, ist aber sicher irgendwie möglich.
Stimmt, das hat mir bei HTML-Tabellen auch immer geholfen, um zu sehen, wie die Zellen aufgeteilt sind. Das müsste doch bei GridBagLayout auch möglich sein, das Gitternetz sichtbar zu machen.
 
C

Camino

Gast
L-ectron-X hat gesagt.:
Wenn du textfeld_wohnort horizontal die Zelle ausfüllen lässt, reicht dann für weightx ein Wert von 1.0 oder weniger.

gbc.fill = GridBagConstraints.HORIZONTAL;

oder eben den entsprechenden korrespondierenden Wert dafür.
Bei GridBagConstraints.HORIZONTAL dehnt sich das Textfeld aber horizontal über das ganze Panel aus, da ich ja die Grösse des Panels nicht begrenzt habe. Deswegen hab ich ja auch für die einzelnen Komponenten Grössen festgelegt und dann fill auf NONE gesetzt.
 

L-ectron-X

Gesperrter Benutzer
mit
Code:
gbc.insets = new Insets(top, left, bottom, right);
kannst du einen Rand um die Komponente festlegen.
 
C

Camino

Gast
OK, ich danke euch allen erstmal und schliesse das Thema hier ab.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
C LayoutManager JFrame größe und ausrichtung + Position von Fensterelementen AWT, Swing, JavaFX & SWT 2
M Ausrichtung Vertikaler BOX funktioniert nicht AWT, Swing, JavaFX & SWT 3
J Swing JTable cell-ausrichtung für zahlen mit alternierenden zeilenfarben AWT, Swing, JavaFX & SWT 2
M Ausrichtung von Box'en AWT, Swing, JavaFX & SWT 3
C Swing GridBag-Probleme (Größe und Ausrichtung) AWT, Swing, JavaFX & SWT 3
H Swing Ausrichtung innerhalb der Reiterlasche eines JTabbedPanes AWT, Swing, JavaFX & SWT 9
M JFreeChart Ausrichtung der Balken AWT, Swing, JavaFX & SWT 2
R Swing JLabel Text ausrichtung AWT, Swing, JavaFX & SWT 2
N Swing Ausrichtung von Text in JTable AWT, Swing, JavaFX & SWT 9
W GUI übernimmt ausrichtung nicht AWT, Swing, JavaFX & SWT 5
D SWT SWT TableViewer ausrichtung des Inhaltes nach Datentyp AWT, Swing, JavaFX & SWT 2
G BoxLayout: Ausrichtung der Komponenten AWT, Swing, JavaFX & SWT 2
G Ausrichtung in der GUI - Problem AWT, Swing, JavaFX & SWT 16
N ausrichtung Button - hilfe bitte AWT, Swing, JavaFX & SWT 2
A JScrollPane und mittige ausrichtung AWT, Swing, JavaFX & SWT 5
G GridbagLayout Ausrichtung AWT, Swing, JavaFX & SWT 3
M Ausrichtung eines Panels AWT, Swing, JavaFX & SWT 7
G tabbedpane ausrichtung der reiter AWT, Swing, JavaFX & SWT 4
T Ausrichtung eines Jbuttons AWT, Swing, JavaFX & SWT 6
R Ausrichtung am oberen Rand beim Gridbag-Layout AWT, Swing, JavaFX & SWT 2
B FlowLayout ausrichtung | "Wasserzeichen" im JFrame AWT, Swing, JavaFX & SWT 8
S Keine Ausrichtung im JTextPane? AWT, Swing, JavaFX & SWT 3
J Ermittlung der Ausrichtung einer Komponente im BorderLayout AWT, Swing, JavaFX & SWT 3
F Ausrichtung einer Spalte ändern? AWT, Swing, JavaFX & SWT 4
C Ausrichtung von Zelleninhalten bei JTable AWT, Swing, JavaFX & SWT 2
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben