GridBagLayout - was fehlt?

NoWitzness

Mitglied
Hallo nochmal!

Also ich spiele seit paar Tagen ein wenig mit dem GridBagLayout herum und frage mich wie diese weightx,y werte zu verstehen sind. Man kann Sie als Prozentuale Angabe sehen, soviel hab ich schon verstanden.
Auch müssen bzw sollten alle weightx und y Angaben in einer Zeile oder Spalte immer 100 ergeben.
Aber trotzdem wills nicht in mein Kopf wie das funktionieren soll .. Ich durchforste ein Forum nach dem anderen und versuch das zu verstehen, tus aber nicht :oops:

.. folgendes ( ohne den schwarzen Bereich, rechts) hätte ich gerne...
attachment.php


Folgendes hab ich bis jetzt geschafft ...
attachment.php

Verständnissfrage: Dieses Gitter, das ich mir beim GridB.L. denke, muss das in meinem Fall das Bild links oben in einer Zelle sein oder darf/soll es sogar über mehrere Spalten und Zeilen gehn?
Wieso ist dann Test2, das Rote Kastl nicht direkt an dem "Bild" dran?
Das "Bild" beginnt bei
Java:
gbc.gridx = 0;
und geht bis
Java:
gbc.gridwidth = 2;
und das Rote TextFeld beginnt auch bei
Java:
gbc.gridx = 2;
warum dann der Abstand Zwischen Grau und Rot??

Mein Code ist wahrscheinlich ziemlich dumm geschrieben aber als Anfänger (zumindest für mich) nicht anderst machbar :noe:
Java:
package startPackage;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class GridBagLayoutFrame extends JFrame{

	private JPanel contentPane;
	private JButton test1 = new JButton();
	private JButton test6, test7;
	private JLabel test2;
	private JLabel test3;
	private JTextField test4;
	private JLabel test5;



	public GridBagLayoutFrame(){

		super("GridBagLayoutFrame");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		contentPane = new JPanel(new GridBagLayout());
		contentPane.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));

		test1 = new JButton("Bild");
		test1.setPreferredSize(new Dimension(180, 150));
		test1.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test1.setBackground(Color.LIGHT_GRAY);
		test1.setOpaque(true);

		test2 = new JLabel("Grösseres TextFeld mit viiiiiiiiiiiel Text");
		test2.setPreferredSize(new Dimension(250, 100));
		test2.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test2.setBackground(Color.RED);
		test2.setOpaque(true);

		test3 = new JLabel("Test");
		test3.setPreferredSize(new Dimension(50, 50));
		test3.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test3.setBackground(Color.GREEN);
		test3.setOpaque(true);

		test4 = new JTextField("Test4");
		test4.setPreferredSize(new Dimension(50, 25));
		test4.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test4.setBackground(Color.YELLOW);
		test4.setOpaque(true);

		test5 = new JLabel("Test5");
		test5.setPreferredSize(new Dimension(200, 25));
		test5.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test5.setBackground(Color.MAGENTA);
		test5.setOpaque(true);

		test6 = new JButton("Button 1");
		test6.setPreferredSize(new Dimension(100, 25));
		test6.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test6.setBackground(Color.ORANGE);
		test6.setOpaque(true);

		test7 = new JButton("Button 2");
		test7.setPreferredSize(new Dimension(100, 25));
		test7.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
		test7.setBackground(Color.ORANGE);
		test7.setOpaque(true);

		JFrame jframe = new JFrame("GridBagLayoutTest");

		GridBagConstraints gbc;
			
			gbc = new GridBagConstraints();
			gbc.gridx = 0;
			gbc.gridy = 0;
			gbc.gridwidth = 2;
			gbc.gridheight = 2;
//			gbc.weightx = 0.5;
//			gbc.weighty = 0.5;
			contentPane.add(test1, gbc);
			
				gbc = new GridBagConstraints();
				gbc.gridx = 2;
				gbc.gridy = 0;
				gbc.gridwidth = 4;
				gbc.gridheight = 2;
				contentPane.add(test2, gbc);
			
					gbc = new GridBagConstraints();
					gbc.gridx = 6;
					gbc.gridy = 0;
					gbc.gridwidth = 1;
					gbc.gridheight = 1;
					contentPane.add(test3, gbc);
			
						gbc = new GridBagConstraints();
						gbc.gridx = 0;
						gbc.gridy = 5;
						gbc.gridwidth = 1;
						gbc.gridheight = 1;
						contentPane.add(test4, gbc);
			
							gbc = new GridBagConstraints();
							gbc.gridx = 1;
							gbc.gridy = 5;
							gbc.gridwidth = 4;
							gbc.gridheight = 1;
							contentPane.add(test5, gbc);
			
								gbc = new GridBagConstraints();
								gbc.gridx = 5;
								gbc.gridy = 5;
								gbc.gridwidth = 2;
								gbc.gridheight = 1;
								gbc.insets = new Insets(2, 0, 2, 2);
								contentPane.add(test6, gbc);
								
										gbc = new GridBagConstraints();
										gbc.gridx = 5;
										gbc.gridy = 4;
										gbc.gridwidth = 2;
										gbc.gridheight = 1;
										gbc.insets = new Insets(0, 0, 2, 2);
										contentPane.add(test7, gbc);
	
		jframe.add(contentPane);
		jframe.setSize(new Dimension(400, 250));
		jframe.pack();
		jframe.setAlwaysOnTop(true);
		jframe.setVisible(true);
	}
}

Vielleicht will sich ja jemand die Zeit nehmen und versuchen, mir zu erklären, worans scheitert?? :)
thx
 

Anhänge

  • istzustand.jpg
    istzustand.jpg
    34,3 KB · Aufrufe: 60
  • gewünscht.jpg
    gewünscht.jpg
    33,1 KB · Aufrufe: 59

NoWitzness

Mitglied
Oder auch gefragt: Was entscheidet, wie gross das Raster ist, in das ich das Bild bzw. das graue Feld einfüge??

Wo ist der Unterschied ob ich das Raster mit kleinen Werten versehe
Java:
 gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.gridwidth = 2;
            gbc.gridheight = 2;
//          gbc.weightx = 0.5;
//          gbc.weighty = 0.5;
            contentPane.add(test1, gbc);
oder mit sehr grossen ....
Java:
 gbc = new GridBagConstraints();
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.gridwidth = 150;
            gbc.gridheight = 150;
//          gbc.weightx = 0.5;
//          gbc.weighty = 0.5;
            contentPane.add(test1, gbc);

das Raster wird dadurch mehr oder weniger höher auflösender, aber wo ist der Vorteil oder Nachteil? Funktioniert das überhaupt? Machts vielleicht keinen Sinn??:rtfm:

Sorry für die vielen Fragen!
 

eMmiE

Bekanntes Mitglied
Ließ dir vllt. mal die Oracle Dokumentation dazu durch hier

An deiner Stelle würde ich damit anfangen, insgesamt anständig und für jede Komponente einheitlich die Zeilen und Spaltenanzahl zu definieren und nicht für jede neu

Bsp.: Für die Höhe gibst du mal bei allen "gridheight = 10" an und für die Breite "gridwidth = 16" und dann probierst du die Komponenten alle anständig auszurichten an diesem Raster

Gruß eMmiE
 

NoWitzness

Mitglied
Ließ dir vllt. mal die Oracle Dokumentation dazu durch hier

An deiner Stelle würde ich damit anfangen, insgesamt anständig und für jede Komponente einheitlich die Zeilen und Spaltenanzahl zu definieren und nicht für jede neu

Bsp.: Für die Höhe gibst du mal bei allen "gridheight = 10" an und für die Breite "gridwidth = 16" und dann probierst du die Komponenten alle anständig auszurichten an diesem Raster

Gruß eMmiE

Danke, aber glaube mir, ich hab mir das schon einige male durchgelesen. Leider ist das teilweise in sehr technischem englisch geschrieben wo ich teilweise nicht ganz folgen kann und mir deshalb wahrscheinlich wichtige details fehlen.

Wie meinst du "einheitlich die Zeilen und Spaltenanzahl zu definieren und nicht für jede neu"?? Klingt als ob ich einiges an Code sparen könnte?!

Aber die Frage was entscheidend für die Gridgrösse ist wird mir einfach nicht klar.
Mit der Bitte um Hilfe und weniger verweise auf andere Seiten ;(
 

kaoZ

Top Contributor
Das Zauberwort heißt
Java:
anchor
Hiermit kannst du bestimmen wo ein Element in seiner Zelle dargestellt wird

Code:
First Line Start     Page Start       First Line End

Line Start                Center          Line End

Last Line Start     Page End         Last Line End

Dabei gilt es zu beachten das das Grid sich immer am größten ihm hinzugefügten Element orientiert.
 
Zuletzt bearbeitet:

Birke

Mitglied
Hallo,

probiere doch mal das Design mit TOnionLayout zu bauen.
Kann hier runtergeladen werden:
https://java.net/projects/tonion/downloads

Es besteht aus zwei LayoutManagern die eineinander geschachtelt werden können:
TrainLayout = Reihe von links nach rechts
TotemLayout = Spalte von oben nach unten

Man gibt beim Inhalt die Minimum und Maximum Größen an.
JButton's werden in ein JPanel mit FlowLayout gehüllt, dann die Größen beim JPanel angeben.

Das ganze Layout kann auch in eine JScrollPane gepackt werden.
Codebeispiele finden sich in einem anderen Beitrag, einfach nach "TOnion" suchen.

Hoffe das hilft.
 

NoWitzness

Mitglied
Das Zauberwort heißt
Java:
anchor
Hiermit kannst du bestimmen wo ein Element in seiner Zelle dargestellt wird

Code:
First Line Start     Page Start       First Line End

Line Start                Center          Line End

Last Line Start     Page End         Last Line End

Dabei gilt es zu beachten das das Grid sich immer am größten ihm hinzugefügten Element orientiert.

Danke!! Der Anchor wars. Was mich generell dazu bewegt hat mich 3 Tage intensiv mit dem GridBagLayout zu befassen ;)
Jetzt klappts so wies soll!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T LayoutManager GridBagLayout / erwartetes Raster fehlt AWT, Swing, JavaFX & SWT 3
S GridBagLayout Felder formatieren AWT, Swing, JavaFX & SWT 1
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
C GridbagLayout verstehen lernen AWT, Swing, JavaFX & SWT 1
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
BabySuna darstellungsprobleme mit JTabbedPane und GridBagLayout AWT, Swing, JavaFX & SWT 8
CptK Positionieren von Elementen in GridBagLayout AWT, Swing, JavaFX & SWT 4
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
Mario1409 AWT GridBagLayout AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
T LayoutManager Anordnen der Elemente im GridBagLayout AWT, Swing, JavaFX & SWT 11
K GridBagLayout mit reponsive Design AWT, Swing, JavaFX & SWT 2
K GridBagLayout verändert die größe? AWT, Swing, JavaFX & SWT 1
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
T GridBagLayout Anfängerprobleme AWT, Swing, JavaFX & SWT 3
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
L GridBagLayout Anordnung AWT, Swing, JavaFX & SWT 3
M Gridbaglayout Spaltenbreite AWT, Swing, JavaFX & SWT 3
M LayoutManager GridBagLayout passt seine größe nicht an AWT, Swing, JavaFX & SWT 3
V GridBagLayout AWT, Swing, JavaFX & SWT 4
N LayoutManager GridBagLayout - Grundlagen AWT, Swing, JavaFX & SWT 6
Neumi5694 Swing Gridbaglayout - automatische Anpassung verhindern AWT, Swing, JavaFX & SWT 1
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
F Breite beim GridBagLayout festlegen AWT, Swing, JavaFX & SWT 2
M Swing GridBagLayout Komponentengröße festsetzen AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
W GridBagLayout Größe geben AWT, Swing, JavaFX & SWT 1
HarleyDavidson Swing Seltsames Verhalten GridBagLayout AWT, Swing, JavaFX & SWT 11
W GridBagLayout mit fester Zellgrösse AWT, Swing, JavaFX & SWT 2
N Swing GridBagLayout: Ein Pixel Versatz AWT, Swing, JavaFX & SWT 2
B Swing Gridbaglayout unterschiedliche Zeilenhöhe AWT, Swing, JavaFX & SWT 6
H LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 1
S Swing rowHeight und rowWeight im GridBagLayout AWT, Swing, JavaFX & SWT 1
N Swing GUI mit GridBagLayout AWT, Swing, JavaFX & SWT 4
A jpanel mit gridbaglayout auf hintergrundbild AWT, Swing, JavaFX & SWT 7
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
G GridBagLayout AWT, Swing, JavaFX & SWT 6
S GridBagLayout "links-rechts-layouten" AWT, Swing, JavaFX & SWT 7
X Gridbaglayout gridx + gridy auslesen? AWT, Swing, JavaFX & SWT 7
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
N GridBagLayout - Zeitplan AWT, Swing, JavaFX & SWT 13
N Swing GridbagLayout AWT, Swing, JavaFX & SWT 4
S Swing gridbaglayout AWT, Swing, JavaFX & SWT 8
G GridBagLayout Problem AWT, Swing, JavaFX & SWT 4
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
X LayoutManager gridBagLayout wird nicht richtig Dargestellt AWT, Swing, JavaFX & SWT 5
das-mo Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 6
T LayoutManager GridBagLayout - zwei jTable mit unterschiedlicher Höhe AWT, Swing, JavaFX & SWT 2
N LayoutManager GridBagLayout schummeln erlaubt ? AWT, Swing, JavaFX & SWT 2
D GridBagLayout AWT, Swing, JavaFX & SWT 9
A Swing GridBagLayout - constraints.anchor scheint nicht korrekt zu funktionieren? AWT, Swing, JavaFX & SWT 7
J Swing Terminkalender Wochenansicht mit Gridbaglayout oder JTable AWT, Swing, JavaFX & SWT 16
C LayoutManager GridBagLayout - Anfängerfrage AWT, Swing, JavaFX & SWT 5
Asamandra LayoutManager GridBagLayout - Komponenten (mit fill?) vergrößern aber Proportionen dabei erhalten? AWT, Swing, JavaFX & SWT 3
R GridBagLayout in GridBagLayout AWT, Swing, JavaFX & SWT 2
H Positionierungsprobleme beim GridBagLayout AWT, Swing, JavaFX & SWT 16
Furtano AWT GridBagLayout macht mir Sorgen AWT, Swing, JavaFX & SWT 3
A GridbagLayout positionierungsproblem AWT, Swing, JavaFX & SWT 4
earlgrey_tea GridBagLayout Componenten proportional vergößern AWT, Swing, JavaFX & SWT 12
D JTable im GridBagLayout -> gridwidth AWT, Swing, JavaFX & SWT 6
T GridBagLayout Problem AWT, Swing, JavaFX & SWT 3
D Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 8
J Swing GridBagLayout: Links-nach-rechts Orientierung statt zentriert AWT, Swing, JavaFX & SWT 12
R Größe eines Labels bei GridBagLayout festlegen AWT, Swing, JavaFX & SWT 9
B GridBagLayout Problem AWT, Swing, JavaFX & SWT 3
M LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 11
E LayoutManager GridBagLayout in BorderLayout - Abstand bei Resizing AWT, Swing, JavaFX & SWT 2
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
L LayoutManager GridBagLayout leere Zeilen AWT, Swing, JavaFX & SWT 4
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
N GridBagLayout Problem AWT, Swing, JavaFX & SWT 6
C Swing JTable "zerstört" GridBagLayout AWT, Swing, JavaFX & SWT 9
N LayoutManager GridBagLayout Größe fixieren AWT, Swing, JavaFX & SWT 3
M GridBagLayout AWT, Swing, JavaFX & SWT 7
V Swing Gridbaglayout Leeres Fenster AWT, Swing, JavaFX & SWT 2
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
N GridBagLayout AWT, Swing, JavaFX & SWT 11
D Swing Problem mit Gridbaglayout bzw. Größenanpassung JPanels AWT, Swing, JavaFX & SWT 7
Y Swing GridbagLayout JTextfield zu klein AWT, Swing, JavaFX & SWT 5
L LayoutManager GridBagLayout spielt verrückt AWT, Swing, JavaFX & SWT 9
T LayoutManager GridBagLayout an Fenstergröße anpassen AWT, Swing, JavaFX & SWT 2
J Java GUI mit GridBagLayout AWT, Swing, JavaFX & SWT 3
Y LayoutManager Problem mit Gridbaglayout AWT, Swing, JavaFX & SWT 8
hdi LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 9
W GridBagLayout Falsche Größenanpassung AWT, Swing, JavaFX & SWT 6
R Swing Button-Größe in JPanel mit GridBagLayout nicht änderbar AWT, Swing, JavaFX & SWT 3
E Problem mit meiner GUI/GridbagLayout AWT, Swing, JavaFX & SWT 2
M LayoutManager GradientPaint auf GridBagLayout AWT, Swing, JavaFX & SWT 5
D LayoutManager GridBagLayout, Änderung zur Laufzeit AWT, Swing, JavaFX & SWT 4
G LayoutManager per Button GridBagLayout + Inhalt ändern AWT, Swing, JavaFX & SWT 2
M GridBagLayout zeilenweise füllen AWT, Swing, JavaFX & SWT 5
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
hdi Swing Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 2
E LayoutManager GridBagLayout kurz vorm Wahnsinn! AWT, Swing, JavaFX & SWT 22
P Swing GridBagLayout bleibt nicht so wie es ist :( AWT, Swing, JavaFX & SWT 8
M gridbaglayout - abstand bei label und field AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben