# JTabbedPane in GridBagLayout



## PseudoReal (24. Mai 2005)

Hi eine Frage.

Ich hab ein Panel, dass mit nur die JTabbedPane malt und paar buttons haben soll

für dieses Panel wollte ich ein GridbagLayout nutzen.

In einem Tab wird ein weiteres JPanel geladen, welches die Grösse von 800x600 hat.
Jedoch sehe ich dieses nicht, ich sehe nur die Tabs.


```
this.setSize(X,Y);
this.setLayout(gbl);

tab.addTab("Stammdaten", new StammdatenAnlegen());
tab.addTab("Gehalt", new GehaltAnlegen());

gbc.fill = GridBagConstraints.NORTHWEST;
gbl.setConstraints(tab, gbc);
this.add(tab);

gbc.fill = GridBagConstraints.SOUTHEAST;
gbl.setConstraints(okButton, gbc);
this.add(okButton);
```


----------



## mic_checker (24. Mai 2005)

Wo fügst du das Panel mit dem GridBagLayout dem Tab hinzu? Vielleicht bin ich nur blind weil ich noch nicht lange wach bin....


----------



## PseudoReal (24. Mai 2005)

this.setLayout(gbl)


sorry ist nicht der volle Code


----------



## sEREAL (24. Mai 2005)

NORTHWEST und SOUTHEAST sind gbc.anchor werte, kein fill
am besten, wenn du unbedingt mit GridBagConstraints arbeiten willst ist es, mit gridwidth und weight zu arbeiten


```
this.setSize(x,y);
this.setLayout(new GridBagLayout());

GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx=0; gbc.gridy=0;  // im gittermuster das oberste, linkeste feld
gbc.weightx = 1.0;gbc.weighty = 1.0; // sorgt dafuer, dass der maximale Platz ausgenutzt wird
gbc.gridwidth=4; // 4 zellen breit
gbc.gridheigth = 3; // 3 zellen hoch
gbc.fill = GridBagConstraints.BOTH; // innerhalb einer Gitterzelle den Platz ausnutzen
this.add(<das Tabpanel>, gbc);

gbc.gridx=0; gbc.gridy=3;  // im gittermuster die 4. zeile, linkeste feld
gbc.gridwidth=1; // zuruecksetzen fuer die buttons
gbc.gridheigth = 1;
this.add(<button1>, gbc);
```

etwas einfacher gehts aber mit BorderLayout


```
setSize(x,y);
setLayout(new BorderLayout());
add(<TabPanel>, BorderLayout.CENTER);
add(<ein extra Panel mit den buttons drin>, BorderLayout.SOUTH);
```


----------



## PseudoReal (24. Mai 2005)

danke habe es aber so hinbekommen:


```
package gui;



import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

import Environment.Variablen;


public class AnlegenTab extends JPanel {

    final int A = new Variablen().getBOUNDS_X(); 
    final int B = new Variablen().getBOUNDS_Y();
    final int C = new Variablen().getBOUNDS_WIDTH();
    final int D = new Variablen().getBOUNDS_HEIGHT();
    //Screensize
    final int X = new Variablen().getSCREENSIZE_X();
    final int Y = new Variablen().getSCREENSIZE_Y();
    
    static JButton okButton = new JButton("Speichern");
    JButton abortButton = new JButton("Abbrechen");
    
    JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);
    GridBagLayout gbl = new GridBagLayout();
    Container c = this;
    
    JLabel fakeText = new JLabel("");
    
    
    public AnlegenTab(){
        
        super();
        initialize();
    }

    
    private void initialize() {
    
        
        this.setSize(X,Y);
        c.setLayout(gbl);
    
     
        tab.addTab("Stammdaten", new StammdatenAnlegen());
        tab.addTab("Gehalt", new GehaltAnlegen());
        tab.addTab("Kommunikation", new KommunikationAnlegen());
        

        
        /*fügt dem Layout eine Komponente hinzu,
         * dabei ist die Reihenfolge:
         * Name des Containers
         * Name des GridBagLayout
         * Name der Komponente
         * Welche Reihenfolge auf der X-Achse
         * Welche Reihenfolge auf der Y-Achse (Ebene)
         * Relative Position X
         * Relative Postion Y
         * Wie viel Horizontaler Platz übernommen wird
         * Wie viel Vertikaler Platz übernommen wird  */
        
        //okButton.setSize(100, 100);
        addComponentTab(c, gbl, tab, 			0, 0, 0, 1, 1.0, 1.0);
        addComponent(c, gbl, fakeText, 			0, 1, 1, 0, 1.0, 0);
        addComponent(c, gbl, okButton,  		1, 1, 1, 0, 0.0, 0);
        addComponent(c, gbl, abortButton,  		2, 1, 1, 0, 0.0, 0.0);
        
        
        
        
    }
    
    
    static void addComponentTab( Container cont, GridBagLayout gbl, Component c, 
            				  int x, int y, int width, int height, double weightx, double weighty) {
        
        
        
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
        gbl.setConstraints(c, gbc);
        
        cont.add(c);
    }
    
    static void addComponent( Container cont, GridBagLayout gbl, Component c, 
			  int x, int y, int width, int height, double weightx, double weighty) {

        GridBagConstraints gbc = new GridBagConstraints();
       
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
        gbl.setConstraints(c, gbc);
        cont.add(c);
}
}
```


----------

