Я пытаюсь использовать менеджер макета GridBagLayout для достижения этой цели:
Однако в настоящее время я получаю следующее:
Проблема в том, что оранжевые и коричневые / серые панели должны занимать второй столбец, но, похоже, хотят занимать только третий, когда дело доходит до выполнения кода.
код, который я использую для макета:
Container contentPane = form.getContentPane();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JPanel pnlGame = new JPanel();
pnlGame.setBackground(Color.green); //temp
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 2;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.85;
c.weighty = 0.65;
contentPane.add(pnlGame, c);
JPanel pnlBuy = new JPanel();
c.gridx = 2;
pnlBuy.setBackground(Color.blue); //temp
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.15;
c.weighty = 0.46;
contentPane.add(pnlBuy, c);
JPanel pnlUpgrade = new JPanel();
pnlUpgrade.setBackground(Color.yellow); //temp
c.gridx = 2;
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.15;
c.weighty = 0.19;
contentPane.add(pnlUpgrade, c);
JPanel pnlStats = new JPanel();
pnlStats.setBackground(Color.red); //temp
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
c.gridheight = 2;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.61;
c.weighty = 0.35;
contentPane.add(pnlStats, c);
JPanel pnlSpeed = new JPanel();
pnlSpeed.setBackground(Color.orange); //temp
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 2;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.38;
c.weighty = 0.04;
contentPane.add(pnlSpeed, c);
JPanel pnlRounds = new JPanel();
pnlRounds.setBackground(Color.gray); //temp
c.gridx = 2;
c.gridy = 3;
c.gridwidth = 2;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.38;
c.weighty = 0.31;
contentPane.add(pnlRounds, c);
Итак, что я делаю не так?Извините, если мой английский немного дерьмовый, и / или ошибка, которую я делаю, ослепительно очевидна ... сейчас 20: 5 утра, и у меня был длинный день.Вероятно, должно ударить сено, довольно скоро.
ОБНОВЛЕНИЕ:
Кажется, что если я изменю ширину сетки коричнево-серой панели, все, кажется, выровняется должным образом, но я получаюнеприятный пробел в моем макете.Здесь:
i.imgur.com / 6JUx2.png
и код панели (включая поправку, предложенную Кевином С.):
JPanel pnlRounds = new JPanel();
pnlRounds.setBackground(Color.gray); //temp
c.gridx = 1;
c.gridy = 3;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.38;
c.weighty = 0.31;
contentPane.add(pnlRounds, c);
Итак,Есть ли что-то, что я делаю неправильно, или это просто какое-то странное поведение GridBagLayout, с которым мне придется жить?
К сожалению, благодаря редактированию, я потерял всевставляет, что Бала R любезно положить туда.Итак, мы боимся ссылок на изображения.И теперь кажется, что я не могу опубликовать более двух гиперссылок, поэтому ссылка была убита в последней, вам нужно скопировать и вставить ее.
Спасибо, Сэм