GridBagLayout

Dagobert

Bekanntes Mitglied
Guten Morgen liebes Forum,
Ich hab gerade ein Problem mit dem GridbagLayout.
Ich habe ein Panel, das mehrere Sub-Panels beinhaltet. Jetzt möchte ich gerne das die Sub-Panels von oben nach unten angezeigt werden. Solange ich mehr Inhalt als Fläche habe klappt dies auch super, nur bei weniger Inhalt fängt es an herum zu zicken. Der Inhalt wird dann in der Mitte angezeigt anstatt oben links zu beginnen.
Welches anchor muss ich benutzen? oO
Java:
private void displayResults(final JPanel panel, int y) {
		GridBagConstraints c;
		
		if (displayHeader) {
			JLabel titelLabel;
			titelLabel = new JLabel("<html>Suche: <i>'" + searchword + "'</i></html>'");
			titelLabel.setFont(new Font("Serif", Font.BOLD, 17));
			c = new GridBagConstraints();
			c.gridy = ++y;
			c.gridwidth = 3;
			c.fill = GridBagConstraints.NONE;
			c.weightx = 0;
			c.weighty = 0;
			c.anchor = GridBagConstraints.NORTH;
			c.insets = center;
			panel.add(titelLabel, c);
		}

		for (Concept result : resultlist) {
			SearchConceptPanel tmp = new SearchConceptPanel(result);
			tmp.setBorder(normal);
			tmp.addMouseListener(this);
			c = new GridBagConstraints();
			c.gridy = ++	y;
			c.fill = GridBagConstraints.BOTH;
			c.anchor = GridBagConstraints.NORTHWEST;
			c.weightx = 1.0;
			c.weighty = 0.0;
			c.insets = center;
			panel.add(tmp, c);
		}
	}
attachment.php


mfg. Dagobert
 
Zuletzt bearbeitet von einem Moderator:

Dagobert

Bekanntes Mitglied
Da die Grafik auf meinem Lappy angezeigt wird, auf dem Rechner in der Uni jedoch nicht, hänge ich sie zur Sicherheit nochmals dran
attachment.php


mfg. Dagobert
 

Anhänge

  • problem.png
    problem.png
    9,9 KB · Aufrufe: 53

bERt0r

Top Contributor
Machst du nachdem du die ganzen Panels hinzufügst ein revalidate()?
Allgemein finde ich es nicht so schön, zur laufzeit Komponenten zusammenzubauen. Dein Ergebnis könntest du mit einer JList und passendem Renderer beispielsweise auch erreichen - einfach aus dem SearchConceptPanel einen ListCellRenderer machen und eine passende setResult() Methode schreiben.
 

Dagobert

Bekanntes Mitglied
Machst du nachdem du die ganzen Panels hinzufügst ein revalidate()?
Nein, da ich erst nachdem alle Panels hinzugefügt sind validiere.
[JAVA=78]/**
* init the GUI
*/
public void initGUI() {
final JPanel panel = new JPanel();
GridBagConstraints c;
final GridBagLayout gbl = new GridBagLayout();
panel.setLayout(gbl);
setLayout(gbl);

int y = 0;

if (!resultlist.iterator().hasNext()) {
// <----- if no result to display ----->
displayNoResults(panel, y);
} else {
// <----- if there is a result to display ----->
displayResults(panel, y);
}

final JScrollPane scroll = new JScrollPane();
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setViewportView(panel);
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.weightx = 1.0;
c.weighty = 1.0;
c.fill = GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.CENTER;
add(scroll, c);

backButton = new JButton(mc.getString("back"));
backButton.setActionCommand("back");
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 1;
c.anchor = GridBagConstraints.CENTER;
c.fill = GridBagConstraints.NONE;
add(backButton, c);

validate();
}[/code]

Dein Ergebnis könntest du mit einer JList und passendem Renderer beispielsweise auch erreichen
Ja aber eigentlich mache ich ja nichts anderes. Die Panels machen ja auch nix anderes als die Sachen zu rendern...

mfg. Dagobert
 

bERt0r

Top Contributor
Nein, die Panels rendern nicht nur sondern sind eigene Komponenten mit dem ganzen Overhead und den ganzen Bedürfnissen nach Layoutanweisungen :). Ein Renderer hält nur eine Komponente welche einfach mehrmals gezeichnet wird - ein bisschen wie ein Stempel.
Ich bin jetzt nicht so top im Gridbaglayout aber versuch mal den anchor vom Scrollpane auf NORTH zu setzen.
 

Dagobert

Bekanntes Mitglied
Ja da hast du wohl recht =)

Naja GridbagConstraints.NORTH bringt leider nix, da das Panel eigentlich eh Bildschirm-füllend ist, sollte das auch egal sein.

mfg. Dagobert
 

Dagobert

Bekanntes Mitglied
Warum schaut ihr nicht einfach in die FAQ, da gibt's ein gutes Tutorial zum GridBagLayout.
Weil ich denke das ich das GridBagLayout mittlerweile ganz gut verstehe (und ich nicht damit rechne das solle "speziellen" Probleme in der FAQ stehen ;)). Jedoch zickt es manchmal herum, so wie hier. Warum muss ich ihm den sagen es soll sich ausbreiten soll, wenn ich nur will das es nach oben wandert?! Das klingt für mich nicht sehr logisch ;)
Jo Tatsache. Was ich dazu denke steht drüber :D
Danke für die Mühe =)
Hier ist mal die Lösung:
[JAVA=155]private void displayResults(final JPanel panel, int y) {
GridBagConstraints c;

if (displayHeader) {
JLabel titelLabel;
titelLabel = new JLabel("<html>Suche: <i>'" + searchword + "'</i></html>'");
titelLabel.setFont(new Font("Serif", Font.BOLD, 17));
c = new GridBagConstraints();
c.gridy = ++y;
c.gridwidth = 3;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
c.weighty = 0.0;
c.anchor = GridBagConstraints.NORTH;
c.insets = center;
panel.add(titelLabel, c);
}

for (Concept result : resultlist) {
SearchConceptPanel tmp = new SearchConceptPanel(result);
tmp.setBorder(normal);
tmp.addMouseListener(this);
c = new GridBagConstraints();
c.gridy = ++ y;
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.NORTH;
c.weightx = 1.0;
c.weighty = 1.0;
c.insets = center;
panel.add(tmp, c);
}
}[/code]

mfg. Dagobert
 

L-ectron-X

Gesperrter Benutzer
Weil ich denke das ich das GridBagLayout mittlerweile ganz gut verstehe (und ich nicht damit rechne das solle "speziellen" Probleme in der FAQ stehen ;)).
...
Warum muss ich ihm den sagen es soll sich ausbreiten soll, wenn ich nur will das es nach oben wandert?!
Sieht wohl so aus, als wenn du das [JAPI]GridBagLayout[/JAPI] doch noch nicht ganz so verstanden hast? ;) Denn so speziell sind deine Probleme mit dem GridBagLayout nicht!
Um Komponenten in eine Richtung zu orientieren/verschieben wird das Attribut
Code:
anchor
benutzt.
Um Komponenten auszudehnen (über ihre PreferredSize hinaus) wird das Attribut
Code:
fill
benutzt.
Um Komponenten eine Gewichtung im Layout zu verschaffen, die eine Aussage darüber macht, wie stark sich die eingestellten [JAPI]GridBagConstraints[/JAPI] auf eine oder mehrere Komponenten auswirken sollen, gibts die Attribute
Code:
weightx
für die horizontale und
Code:
weighty
für die vertikale Achse im Layout.

Aber das hätte man alles in der FAQ nachlesen können... :bahnhof:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
N GridBagLayout - was fehlt? AWT, Swing, JavaFX & SWT 8
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
T LayoutManager GridBagLayout / erwartetes Raster fehlt AWT, Swing, JavaFX & SWT 3
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
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