JPanels не будет отображаться в GridBagLayout - PullRequest
0 голосов
/ 28 февраля 2012

Когда я добавляю 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 Ответ

1 голос
/ 28 февраля 2012

Прекратите тянуть волосы с помощью GridBagLayout, попробуйте вместо этого MigLayout, вы сэкономите много времени:

http://www.miglayout.com

...