JPanels不会在GridBagLayout中显示

时间:2012-02-28 08:11:20

标签: swing jpanel gridbaglayout

当我将JPanel(1)添加到我的GridBagLayout JPanel(2)中时,我的JPanel(1)被缩小为位于中间的小方块。我不知道为什么会这样,因为从理论上说它应该有效。我认为这可能与默认的BorderLayout有关?因为我读到了BorderLayout把你的JPanel放在中间的地方。但我已经将我的布局设置为GridBag,所以我不知道为什么会这样。这是我的代码:

    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();

此外,当我将A和B的边框设置为100像素时,它们都会开始显示。所以我真的很困惑!

1 个答案:

答案 0 :(得分:1)

停止使用GridBagLayout拉你的头发,尝试使用MigLayout,你会节省很多时间:

http://www.miglayout.com