Question

When I add a JPanel(1) into my GridBagLayout JPanel(2), my JPanel(1) is shrinked into a tiny square located in the middle. I don't know why this happened, because in theory it should work. I think it might have something to do with default BorderLayout? cause I read somewhere that BorderLayout puts your JPanel in the middle. But I have already set my Layout as GridBag, so I don't know why this is happening. Here's my code:

    JFrame f = new JFrame("TEST");

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    f.setSize(300, screenSize.height);
    f.setLocation(screenSize.width - 300, 0);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GridBagConstraints gbc = new GridBagConstraints();

    JPanel panel = new JPanel(new GridBagLayout());
    JPanel A = new JPanel();
    Dimension d = new Dimension(270, 50);
    A.setSize(d);
    A.setBackground(Color.GREEN);
    JPanel B = new JPanel();
    B.setSize(d);
    B.setBackground(Color.BLUE);

    gbc.gridy = 0;
    panel.add(A, gbc);
    gbc.gridx = 1;
    panel.add(B, gbc);

    f.add(panel);

    f.validate();
    f.repaint();

More over, when I set the border for A and B to 100 pixels, both of them start showing up. So I am really confused!

Was it helpful?

Solution

Stop pulling your hair with GridBagLayout, try MigLayout instead, you'll save a lot of time:

http://www.miglayout.com

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top