# Probleme mit Spaltenbreite bei GridBagLayout



## jabbah (9. Mrz 2006)

Hallo,

ich habe Fenster in dem ich ein GridBagLayout hab. darin sind ein Panel und verschieden Labels und Textfelder. In meinem Panel benutze ich ebenfalls GridBagLayout und in diesem sind auch Labels und TextFelder.

Das Panel dient dazu die in ihm enthaltenen Felder und Labels bei bedarf auszublenden und so das Fenster auf das nötigste zu beschränken. Dies klappt auch wunderbar.

Nur ist in meinem Panel die erste Spalte breiter als von meinem Frame selbst, wodurch die textFelder alles andere als bundig sind und das nicht schön aussieht. Wie bekomm ich es denn jetzt hin, dass die alle Spalten die gleiche Größe haben?


----------



## norman (9. Mrz 2006)

haben deine labels und textfelder alle die gleiche breite? wenn ein label/textfeld breiter ist als die spalte, in der es platziert wird, sollte sich die spalte verbreitern..


----------



## jabbah (10. Mrz 2006)

die breite meiner Labels und Textfelder kann ich ja bei GridBagLayout nicht direkt beeinflussen. nur durch die Spaltenbreite. Und diese scheint sich nach dem breitesten Objekt in der Spalte zu richten. Da aber auf meinen Panel und meine Frame selbst alle Labels unterschiedliche Größen haben (hier durch unterschiedliche Wortlänge), ist natürlich die erste Spalte meines Panels, breites als die von meinem Frame selbst. 

Ich hab das Problem erstmal so gelöst, dass ich ein Label mit Leerzeichen aufgefüllt habe, bis die Spalten gleich breit sind. Aber das kann ja nicht die beste Lösung darstellen.


----------



## SamHotte (10. Mrz 2006)

So völlig ohne Code ist das schwierig zu beantworten ...


----------



## jabbah (10. Mrz 2006)

```
mannFrauButtonGroup              = new ButtonGroup();
mannFrauPanel                    = new JPanel();
mannButton                       = new JRadioButton();
frauButton                      = new JRadioButton();
vornameLabel                  = new JLabel();
vornameText                   = new AutoSelectTextField();
nachnameLabel                    = new JLabel();
nachnameText           = new AutoSelectTextField();
expandCollapsePanel = new JPanel();
emailLabel                 = new JLabel();
emailText                  = new AutoSelectTextField();
telefonLabel                 = new JLabel();
telefonText                  = new AutoSelectTextField();
handyLabel                = new JLabel();
handyText                  = new AutoSelectTextField();
strasseLabel                  = new JLabel();
strasseText              = new AutoSelectTextField();
adresseLabel               = new JLabel();
adresseText                = new AutoSelectTextField();
buttonPanel                     = new JPanel();
expandCollapseButton            = new JButton();
enterButton                = new JButton();
closeButton                     = new JButton();
resetButton                     = new JButton();
        
frame.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints1;
        
int currentGridy = 0;
int currentGridx;

mannFrauPanel.setLayout(new GridBagLayout());
mannFrauPanel.setBorder( new EtchedBorder( EtchedBorder.LOWERED ) );

mannFrauButtonGroup.add( mannButton );
mannButton.setName("mannButton");
mannButton.setText("Mann");
mannButton.setBackground( Color.lightGray );
mannButton.setBorder( BorderFactory.createLineBorder( Color.green) );
mannButton.setBorderPainted( true );
mannButton.setHorizontalAlignment( SwingConstants.CENTER );
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = 0;
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
mannFrau.add(mannButton, gridBagConstraints1);
        
mannFrauButtonGroup.add( frauButton );
frauButton.setName("frauButton");
frauButton.setText("Frau");
frauButton.setBackground( Color.lightGray );
frauButton.setBorder( new LineBorder( Color.red ) );
frauButton.setBorderPainted( true );
frauButton.setHorizontalAlignment( SwingConstants.CENTER );
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 1;
gridBagConstraints1.gridy = 0;
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
mannFrauPanel.add(frauButton, gridBagConstraints1);
        
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.gridwidth = GridBagConstraints.REMAINDER;
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
frame.getContentPane().add(mannFrauPanel, gridBagConstraints1);
        
currentGridy++;

vornameLabel.setName("vornameLabel");
vornameLabel.setText("Vorname");
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
frame.getContentPane().add(vornameLabel, gridBagConstraints1);
        
vornameText.setColumns(10);
// vornameText.....

currentGridy++;

nachnameLabel.setName("nachnameLabel");
nachnameLabel.setText("Nachname");
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
frame.getContentPane().add(nachnameLabel, gridBagConstraints1);
        
nachnameText.setColumns(10);
// nachenameText....

currentGridy++;

// ==> Panel für die zu auszublendenden Felder
        
expandCollapsePanel.setLayout( new GridBagLayout() );
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.gridwidth = GridBagConstraints.RELATIVE;
gridBagConstraints1.fill = GridBagConstraints.LINE_END;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets( 0, 0, 5, 0 );
frame.getContentPane().add(expandCollapsePanel, gridBagConstraints1);
        
        
emailLabel.setName("emailLabel");
emailLabel.setText("Email          ");    // fill off with space
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
expandCollapsePanel.add(expiryLabel, gridBagConstraints1);
        
emailText.setName("emailText");
emailText.setColumns(20);
email.setHorizontalAlignment( JTextField.LEFT);
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 1;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
expandCollapsePanel.add(emailText, gridBagConstraints1);
        
currentGridy++;
        
telefonLabel.setName("telefonLabel");
telefonLabel.setText("Tel");
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 10, 0);
expandCollapsePanel.add(telefonLabel, gridBagConstraints1);
        
telefonText.setName("telefonText");
// telefonText....

// ==> end of the elements which can be hide. The first row of the panel is smaller then the first row of the frame.

currentGridy++;
currentGridx = 0;
int currentGridwidth = 2;

        
strasseLabel.setName("strasseLabel");
strasseLabel.setText("Strasse ");
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = currentGridx;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
frame.getContentPane().add(strasseLabel, gridBagConstraints1);

// strasseText ....
        

currentGridy++;

adresseLabel.setName("adressLabel");
adresseLabel.setText("Adresse");
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.anchor = GridBagConstraints.WEST;
gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
frame.getContentPane().add(adresseLabel, gridBagConstraints1);
        
adresseText.setName("adresseText");
// adresseText.....
        
currentGridy++;

buttonPanel.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints2;
        
 // .. buttons
        
gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.gridx = 0;
gridBagConstraints1.gridy = currentGridy;
gridBagConstraints1.gridwidth = GridBagConstraints.REMAINDER;
gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints1.weightx = 1.0;
frame.getContentPane().add(buttonPanel, gridBagConstraints1);
```

Ist nicht gerade wenig, ich weiß


----------



## SamHotte (13. Mrz 2006)

Hmm. Ist momentan a weng unübersichtlich, der Code, aber mal auf die Schnelle:
1. für jedes Element neue Constraints benutzen (scheint der Fall zu sein
2. für alle Elemente, die gleich breit sein sollen, GridBagConstraints.fill auf GridBagConstraints.HORIZONTAL setzen
3. schauen, dass .width für alle gleich ist (am besten =1)
4. schauen, dass .weightx für alle gleich ist
5. dito für ipadx und anchor.
dann sollte es eigentlich funktionieren.

Ich benutze eigentlich fast nur weight und fill, damit muss man ein bisschen rumspielen, weil der Rest teilweise komische Ergebnisse erzielt ;-)


----------



## jabbah (13. Mrz 2006)

eigentlich hab ich ja all diese fünf punkte befolgt. aber das Problem scheint ja zu sein, dass in meine Frame in GridBagConstrains_A hat, dessen breite der ersten spalte durch das wort Telefon bestimmt wird. in diese spalte wird meine panel mit dem GridBagConstrains_B geadded, dessen breite der ersten spalte durch das wort Email bestimmt wird.


----------



## SamHotte (13. Mrz 2006)

Da mir bei deinem Code so einige Klassen zum compilieren fehlen, kann ich leider auch nicht wirklich weiterhelfen.


----------



## jabbah (13. Mrz 2006)

waas fehlen dir da für klassen? sind doh alle aus der javabibliothek, wenn ich mich niht täusche


----------



## André Uhres (13. Mrz 2006)

jabbah hat gesagt.:
			
		

> ...in diese spalte wird meine panel mit dem GridBagConstrains_B geadded,
> dessen breite der ersten spalte durch das wort Email bestimmt wird.


Das Wort _Email_ hängt in der Luft. _emailLabel_ wird nämlich nirgends eingefügt.
Mit so nem Bandwurm der nicht mal kompilierbar ist kann man eh nix anfangen.
Versuch ein KSKB zu erstellen (klick bitte auf den Link unter meinem Namen).
Gruß,
André
http://www.java-forum.org/de/viewtopic.php?p=171842#171842


----------



## SamHotte (13. Mrz 2006)

jabbah hat gesagt.:
			
		

> waas fehlen dir da für klassen? sind doh alle aus der javabibliothek, wenn ich mich niht täusche


AutoSelectTextField


----------



## jabbah (13. Mrz 2006)

okay, fehler von mir. aber statt AutoSelectedTextField kann man ja auch das JTextField benutzten


----------



## André Uhres (13. Mrz 2006)

Wenn man den Code, nachdem man in kompilierbar gemacht hat, endlich ausführen kann, kommt dies raus:






Das erste Bild ist mit *mit* dem Panel.
Beim zweiten ist der Panel ausgeblendet.
Wo ist jetzt das Problem zu sehen?


----------



## jabbah (13. Mrz 2006)

ich hab es jetzt nochmal bei mir laufen lassen. und wenn du mir verrätst, wie ich es schaffe  bilder anzuzeigen, dann kann ich dir das Problem zeigen


----------



## André Uhres (13. Mrz 2006)

Hier kannste Bilder hochladen:
http://www.imageshack.us/
Dann brauchste nur noch den _hotlink for forums (1)_ in deinen Beitrag zu kopieren.


----------



## jabbah (13. Mrz 2006)

vielen dank für den hinweis mit den bildern.

mein dialog sind so aus bei nachfolgendem Quellcode:






```
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;




public class EnterOrderDialog{

    
    static public void main( String[] args ) {

      
        EnterOrderDialog orderDialog = new EnterOrderDialog(  0 );
    }




    private JFrame                  	frame;
    private JRadioButton                mannButton;
    private JRadioButton                frauButton;
    private ButtonGroup                 mannfrauButtonGroup;
    private JPanel                      mannfrauPanel;
    private JLabel                      VornameLabel;
    private JTextField      		    VornameText;
    private JLabel                      NachnameLabel;
    private JTextField         			NachnameText;
    private JPanel                      expandCollapsePanel;
    private JLabel                      telLabel;
    private JTextField         			telText;
    private JLabel                      strasseLabel;
    private JTextField         			strasseText;
    private JLabel                      HausnummerLabel;
    private JTextField         			HausnummerText;
    private JPanel                      buttonPanel;
    private JButton                     expandCollapseButton;
    private JButton                     enterOrderButton;
    private JButton                     closeButton;
    private JButton                     resetButton;
    private int                         dialogMode;



    public EnterOrderDialog( int               dialogMode ) {

        this.dialogMode        = dialogMode;

        initFrame( );
         frame.setVisible( true );

        
    }

    


    /** Main initialization for frame
     *  including title, size, listeners, controls, etc...
     */
    private void initFrame(  ) {

        GraphicsEnvironment   graphicsEnvironment   = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice        graphicsDevice        = graphicsEnvironment.getDefaultScreenDevice();
        GraphicsConfiguration graphicsConfiguration = graphicsDevice.getDefaultConfiguration();
        frame = new JFrame( );
        frame.setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );

        
    
        initComponents();
        
        
//    

        frame.pack();
        frame.setResizable( false );

 
        
    }



    /** Initialization of visible components
     *  like labels, input fields, tables, etc...
     */
    private void initComponents() {

        mannfrauButtonGroup              = new ButtonGroup();
        mannfrauPanel                        = new JPanel();
        mannButton                            = new JRadioButton();
        frauButton                              = new JRadioButton();
        VornameLabel                         = new JLabel();
        VornameText                    	      = new JTextField();
        NachnameLabel                	    = new JLabel();
        NachnameText                  	     = new JTextField();
        expandCollapsePanel               = new JPanel();
        telLabel                 		   = new JLabel();
        telText                  		    = new JTextField();
        strasseLabel      			   	 = new JLabel();
        strasseText       				 = new JTextField();
        HausnummerLabel   				 = new JLabel();
        HausnummerText    				 = new JTextField();
        buttonPanel                      = new JPanel();
        expandCollapseButton             = new JButton();
        enterOrderButton                 = new JButton();
        closeButton                      = new JButton();
        resetButton                      = new JButton();
        
        frame.getContentPane().setLayout(new GridBagLayout());
        GridBagConstraints gridBagConstraints1;
        
        int currentGridy = 0;
        int currentGridx;

        mannfrauPanel.setLayout(new GridBagLayout());
        mannfrauPanel.setBorder( new EtchedBorder( EtchedBorder.LOWERED ) );

        mannfrauButtonGroup.add( mannButton );
        mannButton.setName("mannButton");
        mannButton.setText("mann");
        mannButton.setBackground( Color.lightGray );
        mannButton.setBorder( BorderFactory.createLineBorder( Color.green) );
        mannButton.setBorderPainted( true );
        mannButton.setHorizontalAlignment( SwingConstants.CENTER );
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = 0;
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints1.weightx = 1.0;
        gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
        mannfrauPanel.add(mannButton, gridBagConstraints1);
        
        mannfrauButtonGroup.add( frauButton );
        frauButton.setName("frauButton");
        frauButton.setText("frau");
        frauButton.setBackground( Color.lightGray );
        frauButton.setBorder( new LineBorder( Color.red ) );
        frauButton.setBorderPainted( true );
        frauButton.setHorizontalAlignment( SwingConstants.CENTER );
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 1;
        gridBagConstraints1.gridy = 0;
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints1.weightx = 1.0;
        gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
        mannfrauPanel.add(frauButton, gridBagConstraints1);
        
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.gridwidth = GridBagConstraints.REMAINDER;
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints1.weightx = 1.0;
        gridBagConstraints1.insets = new Insets(5, 5, 5, 5);
        frame.getContentPane().add(mannfrauPanel, gridBagConstraints1);
        
        currentGridy++;

        VornameLabel.setName("VornameLabel");
        VornameLabel.setText("Size");
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
        frame.getContentPane().add(VornameLabel, gridBagConstraints1);
        
        VornameText.setColumns(10);
        VornameText.setName("VornameText");
        VornameText.setHorizontalAlignment( JTextField.RIGHT );
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 1;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        frame.getContentPane().add(VornameText, gridBagConstraints1);
        
        currentGridy++;

        NachnameLabel.setName("NachnameLabel");
        NachnameLabel.setText("Limit Price");
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        frame.getContentPane().add(NachnameLabel, gridBagConstraints1);
        
        NachnameText.setName("NachnameText");
        NachnameText.setColumns(10);
        NachnameText.setEnabled( true );
        NachnameText.setHorizontalAlignment( JTextField.RIGHT );
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 1;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        frame.getContentPane().add(NachnameText, gridBagConstraints1);
        
        currentGridy++;

        expandCollapsePanel.setLayout( new GridBagLayout() );
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.gridwidth = GridBagConstraints.RELATIVE;
        gridBagConstraints1.fill = GridBagConstraints.LINE_END;
        gridBagConstraints1.weightx = 1.0;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets( 0, 0, 5, 0 );
        frame.getContentPane().add(expandCollapsePanel, gridBagConstraints1);
        
        telLabel.setName("telLabel");
        telLabel.setText("Tel");
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 10, 0);
        expandCollapsePanel.add(telLabel, gridBagConstraints1);
        
        telText.setName("telText");
        telText.setColumns(8);
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 1;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 10, 0);
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        expandCollapsePanel.add(telText, gridBagConstraints1);
      
        currentGridy++;
        currentGridx = 0;

        HausnummerLabel.setName("HausnummerLabel");
        HausnummerLabel.setText("hausnummer");
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
        frame.getContentPane().add( HausnummerLabel, gridBagConstraints1 );
        
        HausnummerText.setName("HausnummerText");
        HausnummerText.setColumns(10);
        HausnummerText.setHorizontalAlignment( JTextField.LEFT );
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridwidth = 2;
        gridBagConstraints1.gridx = 1;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 5);
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
       frame.getContentPane().add( HausnummerText, gridBagConstraints1 );
        
        
        
        currentGridy++;
        currentGridx = 0;
        int currentGridwidth = 2;

        // XXX fill the text of strasseLabel with spaces thats why the 1st row is shorter then the 1st row of the expandCollapsePanel.
        // XXX And this will diplaced the text fields
        strasseLabel.setName("strasseLabel");
        strasseLabel.setText("strasse ");
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = currentGridx;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 0);
        frame.getContentPane().add(strasseLabel, gridBagConstraints1);
        
        currentGridx++;

        strasseText.setName("strasseText");
        strasseText.setColumns(10);
        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridwidth = currentGridwidth;
        gridBagConstraints1.gridx = currentGridx;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.anchor = GridBagConstraints.WEST;
        gridBagConstraints1.insets = new Insets(0, 5, 0, 5);
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        frame.getContentPane().add(strasseText, gridBagConstraints1);
        
        currentGridy++;

        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.gridwidth = GridBagConstraints.REMAINDER;
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints1.insets = new Insets(20, 0, 10, 0);
        frame.getContentPane().add( new JSeparator(), gridBagConstraints1);
        
        currentGridy++;

        buttonPanel.setLayout(new GridBagLayout());
        GridBagConstraints gridBagConstraints2;
        
        expandCollapseButton.setName( "expandCollapseButton" );
        expandCollapseButton.setText( "Expand" );
        expandCollapseButton.setHorizontalTextPosition( AbstractButton.LEFT );
        gridBagConstraints2 = new GridBagConstraints();
        gridBagConstraints2.gridx = 0;
        gridBagConstraints2.gridy = 2;
        gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints2.weightx = 1.0;
        gridBagConstraints2.insets = new Insets(10, 10, 10, 20);
        buttonPanel.add(expandCollapseButton, gridBagConstraints2);
        
        enterOrderButton.setName( "enterOrderButton" );
        enterOrderButton.setText( "eingabe" );
        //gridBagConstraints2 = new GridBagConstraints();
        gridBagConstraints2.gridx = 1;
        gridBagConstraints2.gridy = 2;
        gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints2.weightx = 1.0;
        gridBagConstraints2.insets = new Insets(10, 10, 10, 10);
        buttonPanel.add(enterOrderButton, gridBagConstraints2);
        
        resetButton.setName("resetButton");
        resetButton.setText("Reset");
        gridBagConstraints2 = new GridBagConstraints();
        gridBagConstraints2.gridx = 2;
        gridBagConstraints2.gridy = 2;
        gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints2.weightx = 1.0;
        gridBagConstraints2.insets = new Insets(10, 10, 10, 10);
        buttonPanel.add(resetButton, gridBagConstraints2);
        
        closeButton.setName("closeButton");
        closeButton.setText("Close");
        gridBagConstraints2 = new GridBagConstraints();
        gridBagConstraints2.gridx = 3;
        gridBagConstraints2.gridy = 2;
        gridBagConstraints2.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints2.weightx = 1.0;
        gridBagConstraints2.insets = new Insets(10, 10, 10, 10);
        buttonPanel.add(closeButton, gridBagConstraints2);

        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.gridwidth = GridBagConstraints.REMAINDER;
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints1.weightx = 1.0;
        frame.getContentPane().add(buttonPanel, gridBagConstraints1);
        
        currentGridy++;

        gridBagConstraints1 = new GridBagConstraints();
        gridBagConstraints1.gridx = 0;
        gridBagConstraints1.gridy = currentGridy;
        gridBagConstraints1.gridwidth = GridBagConstraints.REMAINDER;
        gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
        gridBagConstraints1.insets = new Insets(10, 0, 5, 0);
        frame.getContentPane().add( new JSeparator(), gridBagConstraints1);

    }
}
```


----------



## norman (13. Mrz 2006)

[off-topic] mit ALT + DRUCK kannst du ein screenshot vom aktuellen (aktiven) Fenster machen, dann brauchst du nichts ausschneiden und es gibt keine hässlichen weißen ränder :wink: [/off-topic]


----------



## jabbah (13. Mrz 2006)

nur leider bring mich der ratschlag über ränderfreie screenshoots meinem problem nicht ein stückchen näher  :cry:


----------



## André Uhres (13. Mrz 2006)

Mach einen Panel pro Spalte.

```
import java.awt.*;
import javax.swing.*;
/*
 * GBLTest.java
 */
public class GBLTest extends JFrame {
    public GBLTest() {
        GridBagConstraints gridBagConstraints;

        jLabel1 = new JLabel();
        jTextField1 = new JTextField();
        jPanel1 = new JPanel();
        jLabel2 = new JLabel();
        jPanel2 = new JPanel();
        jTextField2 = new JTextField();
        jLabel3 = new JLabel();
        jTextField3 = new JTextField();

        getContentPane().setLayout(new GridBagLayout());

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jLabel1.setText("jLabel1");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.anchor = GridBagConstraints.WEST;
        getContentPane().add(jLabel1, gridBagConstraints);

        jTextField1.setText("jTextField1");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.anchor = GridBagConstraints.WEST;
        getContentPane().add(jTextField1, gridBagConstraints);

        jPanel1.setLayout(new GridBagLayout());

        jLabel2.setText("jLabel2");
        jPanel1.add(jLabel2, new GridBagConstraints());

        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = GridBagConstraints.WEST;
        getContentPane().add(jPanel1, gridBagConstraints);

        jPanel2.setLayout(new GridBagLayout());

        jTextField2.setText("jTextField2jTextField2");
        jPanel2.add(jTextField2, new GridBagConstraints());

        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = GridBagConstraints.WEST;
        getContentPane().add(jPanel2, gridBagConstraints);

        jLabel3.setText("jLabel3jLabel3");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = GridBagConstraints.WEST;
        getContentPane().add(jLabel3, gridBagConstraints);

        jTextField3.setText("jTextField3");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = GridBagConstraints.WEST;
        getContentPane().add(jTextField3, gridBagConstraints);

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-400)/2, (screenSize.height-300)/2, 400, 300);
    }
    public static void main(String args[]) {new GBLTest().setVisible(true);}
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JPanel jPanel1;
    private JPanel jPanel2;
    private JTextField jTextField1;
    private JTextField jTextField2;
    private JTextField jTextField3;
}
```
Wie du siehst kann man das Beispiel auf weniger als 100 Zeilen reduzieren.
Das ist viel übersichtlicher als ein Beispiel von über 300 Zeilen.
Und die Lösung des Problems findet man viel leichter und schneller.
Das meine ich mit KSKB.


----------



## jabbah (14. Mrz 2006)

hab das Problem gelöst. ist zwar nicht gerade ein wirklich zufriedenstellendes ergebnis, das es dann auch noch probleme mit den größen der Textfelder gab. und einige textfelder dann unter bestimmten doch immer sichtbar sein sollten und woanders gehidet werden können.
im moment setze ich die sichtbarkeit jedes elementes einzeln. nicht gerade schön, aber stressfreier


----------

