AWT GridBagLayout macht mir Sorgen

Furtano

Mitglied
Hi,
ich möchte in Java AWT ein GridBagLayout haben (Bitte keine Posts wie benutz doch Swing oder nutze ein anderes Layout).

Wie es sein soll, und was raus kommt seht ihr im Anhang.

Warum ist der Vertikale Abstand bei farbauszugRot2 so groß?
Liegt es am Layout ?

Java:
    /**
    *
    * GRIDBAGLAYOUT
    * ab hier
    */
    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints gbc;
    this.setLayout(gbl);
    // gridx, gridy, gridwidth, gridheight
    gbc = makegbc(0, 0, 2, 2);
    // was wenn groesse des fensters veraendert wird
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.NORTH;
    gbc.weightx = bild.getWidth(null)*2;
    gbc.weighty = bild.getHeight(null)*2;
    // Constraints dem Bild zuweisen
    gbl.setConstraints(panelMainBildLinks, gbc);
    this.add(panelMainBildLinks);
     
    //--------- Roten Farbauszug hinzufuegen ---------
    gbc = makegbc(2, 0, 1, 1);
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.NORTH;
    gbc.weightx = bild.getWidth(null);
    gbc.weighty = bild.getHeight(null);
    // Constraints dem Bild zuweisen
    gbl.setConstraints(farbauszugRot, gbc);
    this.add(farbauszugRot);
    //--------- Gruenen Farbauszug hinzufuegen ---------
    gbc = makegbc(3, 0, 1, 1);
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.NORTH;
    gbc.weightx = bild.getWidth(null);
    gbc.weighty = bild.getHeight(null);
    // Constraints dem Bild zuweisen
    gbl.setConstraints(farbauszugGruen, gbc);
    this.add(farbauszugGruen);
    //--------- Blauen Farbauszug hinzufuegen ---------
    gbc = makegbc(4, 0, 1, 1);
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.NORTH;
    gbc.weightx = bild.getWidth(null);
    gbc.weighty = bild.getHeight(null);
    // Constraints dem Bild zuweisen
    gbl.setConstraints(farbauszugBlau, gbc);
    this.add(farbauszugBlau);
    //--------- Roten Farbauszug hinzufuegen ---------
    gbc = makegbc(2, 1, 1, 1);
    gbc.fill = GridBagConstraints.BOTH;
    gbc.anchor = GridBagConstraints.SOUTH;
    gbc.weightx = bild.getWidth(null);
    gbc.weighty = bild.getHeight(null);
    // Constraints dem Bild zuweisen
    gbl.setConstraints(farbauszugRot2, gbc);
    this.add(farbauszugRot2);
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
ich möchte in Java AWT ein GridBagLayout haben (Bitte keine Posts wie benutz doch Swing oder nutze ein anderes Layout).
Und ich mach es trotzdem. Wenn die Bilder rechts in einem gleichmässigen Gitter angeordnet werden sollen könnte man für diesen Teil einfach ein GridLayout verwenden.

Warum ist der Vertikale Abstand bei farbauszugRot2 so groß?
Das ist anhand des hier geposteten Codes nicht erkennbar. Kannst Du evtl. einen kurzen kompilierbaren und ausführbaren Code posten, der das Problem darstellt?
Java:
    gbc.weightx = bild.getWidth(null)*2;
    gbc.weighty = bild.getHeight(null)*2;
    ...
    gbc.weightx = bild.getWidth(null);
    gbc.weighty = bild.getHeight(null);
Wenn die Gewichtung einfach nur 2:1 sein soll, würde hier z.B. einfach
Code:
gbc.weightx=2
und
Code:
gbc.weightx=1
ausreichen.
Java:
     gbc = makegbc(0, 0, 2, 2);
Warum liefert makegbc ein Objekt vom Typ GridBagConstraints zurück? Wird hier jedesmal ein neues Objekt erzeugt? Ein einziges GridBagContraints ist völlig ausreichend und kann wiederverwendet werden. (Dann könnte man sich in diesem Fall auch einige Zeilen Code sparen)
Java:
         gbl.setConstraints(farbauszugRot, gbc);
    this.add(farbauszugRot);
Die Alternative in kurz wäre hierzu:
Code:
this.add(farbauszugRot, gbc);
 

André Uhres

Top Contributor
Hallo Furtano,

der fragliche Abstand kann im vorliegenden Fall nicht vom Layout kommen, weil durch fill=BOTH die betroffene Komponente stets ihren ganzen Anzeigebereich füllen wird, das heißt die Zelle mit den Koordinaten x=2 und y=1 wird ganz mit der Komponente ausgefüllt, außer wenn eine Außenpolsterung benutzt wird (Insets).

Java:
import static java.awt.GridBagConstraints.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class Testing {

    private final JPanel panelMainBildLinks;
    private final JPanel farbauszugRot;
    private final JPanel farbauszugGruen;
    private final JPanel farbauszugBlau;
    private final JPanel farbauszugRot2;

    public Testing() {
        JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        //
        GridBagLayout gbl = new GridBagLayout();
        GridBagConstraints gbc;
        JPanel mainpanel = new JPanel(gbl);
        panelMainBildLinks = new JPanel();
        panelMainBildLinks.setBackground(Color.BLACK);
        farbauszugRot = new JPanel();
        farbauszugRot.setBackground(Color.RED);
        farbauszugGruen = new JPanel();
        farbauszugGruen.setBackground(Color.GREEN);
        farbauszugBlau = new JPanel();
        farbauszugBlau.setBackground(Color.BLUE);
        farbauszugRot2 = new JPanel();
        farbauszugRot2.setBackground(Color.ORANGE);
        mainpanel.add(panelMainBildLinks, new GridBagConstraints(0, 0, 2, 2, 1.0, 1.0, NORTH, BOTH, new Insets(0, 0, 0, 0), 0, 0));
        //--------- Roten Farbauszug hinzufuegen ---------
        mainpanel.add(farbauszugRot, new GridBagConstraints(2, 0, 1, 1, 1.0, 1.0, NORTH, BOTH, new Insets(0, 0, 0, 0), 0, 0));
        //--------- Gruenen Farbauszug hinzufuegen ---------
        mainpanel.add(farbauszugGruen, new GridBagConstraints(3, 0, 1, 1, 1.0, 1.0, NORTH, BOTH, new Insets(0, 0, 0, 0), 0, 0));
        //--------- Blauen Farbauszug hinzufuegen ---------
        mainpanel.add(farbauszugBlau, new GridBagConstraints(4, 0, 1, 1, 1.0, 1.0, NORTH, BOTH, new Insets(0, 0, 0, 0), 0, 0));
        //--------- Roten Farbauszug hinzufuegen ---------
        mainpanel.add(farbauszugRot2, new GridBagConstraints(2, 1, 1, 1, 1.0, 1.0, SOUTH, BOTH, new Insets(0, 0, 0, 0), 0, 0));
        frame.add(mainpanel);
        frame.setVisible(true);
    }

    public static void main(final String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                Testing test = new Testing();
            }
        });
    }
}
Es wird empfohlen, für jede neue Komponente auch eine neues GridBagConstraints Objekt anzulegen und die Constraints nicht mit der Methode GridBagLayout.setConstraints zu übergeben, sondern mit dem vorgesehenen Parameter der Methode Container.add:
Java:
GridBagConstraints constraints = new GridBagConstraints();
...
add(component, constraints);

Gruß,
André
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
D GridBagLayout macht nicht das was es soll AWT, Swing, JavaFX & SWT 12
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
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
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
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

Ähnliche Java Themen

Neue Themen


Oben