Folgendes Problem: Ich wollte mit dem GridBagLayoutManager mir ein Fenster aufbauen, wo ein Kästchen mit der unveränderbaren Größe 50*50 in der oberen rechten Ecke sitzt, welches von einem vertikalen und einem horizontalen Panel mit je fester Breite bzw. fester Höhe umgeben werden soll. Ich benutzte dazu die Hilfsfunktion aus dem Buch "Java ist auch eine Insel" (addComponent). es passiert nun folgendes: Das Kästchen ist alles andere als unveränderlich (beim ziehen des Fenster ändert sich ständig die Größe des Kästchens und auch das horizontale Kästchen will nicht so recht. Hier mal der Code dazu:
Liebe Grüße,
Luciferius
Java:
import java.awt.*;
import javax.swing.*;
class KSKB1 extends JFrame{
public KSKB1(){
GridBagLayout gbl = new GridBagLayout();
JPanel mainPanel = new JPanel(gbl);
this.setContentPane(mainPanel);
this.setSize(400, 400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JLabel horizontal = new JLabel();
horizontal.setBackground(Color.black);
horizontal.setOpaque(true);
horizontal.setPreferredSize(new Dimension(0,10));
horizontal.setMaximumSize(horizontal.getPreferredSize());
// x y b h ax ay
addComponent(mainPanel,gbl,horizontal,0, 1, 2, 1,1.0,0);
JLabel vertikal = new JLabel();
vertikal.setBackground(Color.black);
vertikal.setOpaque(true);
vertikal.setPreferredSize(new Dimension(10,0));
vertikal.setMaximumSize(vertikal.getPreferredSize());
// x y b h ax ay
addComponent(mainPanel,gbl,vertikal, 1, 0, 1,1,0, 1.0);
JPanel kästchen = new JPanel();
kästchen.setBackground(Color.white);
kästchen.setOpaque(true);
kästchen.setPreferredSize(new Dimension(50,50));
kästchen.setMaximumSize(kästchen.getPreferredSize());
// x y b h ax ay
addComponent(mainPanel,gbl,kästchen,0,0,1,1,0 ,0 );
JPanel lower = new JPanel(gbl);
JPanel right = new JPanel(gbl);
addComponent(mainPanel,gbl,lower,0,2,3,1,1.0,1.0);
addComponent(mainPanel,gbl,right,2,0,1,2,1.0,1.0);
}
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.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);
}
public static void main(String... args) {
KSKB1 kskb = new KSKB1();
kskb.setVisible(true);
}
}
Liebe Grüße,
Luciferius