GridBagLayout Anordnung

LatinFavourite

Bekanntes Mitglied
Hallo zusammen,

da ich meine GUI optisch ansprechender aufbauen möchte, beschäftige ich mich gerade mit dem GridBagLayout. Die Anordnung in einem Gitter funktioniert auch soweit, jedoch werden alle Elemente in einem Gitter in der Mitte des Fensters angeordnet. Woran liegt das, bzw. wie kann ich Elemente anders ausrichten?

Vielen Dank.

Java:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class View extends JFrame {
   
    private JLabel dx, dy;
    private JTextField text, text2;
    private JRadioButton trans, scale, rotate;
   
   
    public View(){
        super("GridBagLayout");
        setSize(800, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        GridBagConstraints c = new GridBagConstraints();
        setLayout(new GridBagLayout());
   
        c.insets = new Insets(2,2,2,2);
       
        trans = new JRadioButton("trans");
        c.gridx = 0;
        c.gridy = 0;
        add(trans,c);
       
        scale = new JRadioButton("scale");
        c.gridx = 1;
        c.gridy = 0;
        add(scale,c);
   
        rotate = new JRadioButton("rotate");
        c.gridx = 2;
        c.gridy = 0;
        add(rotate,c);
       
        dx = new JLabel("x-Richtung");
        c.gridx = 0;
        c.gridy = 1;
        add(dx,c);
       
        text = new JTextField(10);
        c.gridx = 1;
        c.gridy = 1;
        c.gridwidth = 1;
        add(text, c);
       
        dy = new JLabel("y-Richtung");
        c.gridx = 0;
        c.gridy = 2;
        add(dy, c);
       
        text2 = new JTextField(10);
        c.gridx = 1;
        c.gridy = 2;
        add(text2, c);
       
       
        setVisible(true);
    }
}
 
ich leg das ganze immer noch auf ein Panel bevor es auf den Frame kommt. In diesem Fall würde ich nicht von JFrame erben, da du diesen nicht erweiterst.
 
Gridbaglayout ist sehr mächtig, bedarf aber der Einarbeitung.

1. Deine costraints haben keine weights.
Damit die Breite eines Grid-Feldes über das notwendige Minimum hinausgeht, muss zumindest in einem der Komponenten der gleichen Spalte c.weightx > 0 sein.
2. Damit deine Komponente dann auch das gesamte Feld ausfüllt, muss c.fill mit den entsprechenden Optionen gesetzt sein.
 

Zurück
Oben