我试图使用到的GridBagLayout布局管理器来实现这一目标:的GridBagLayout在Java中列问题
然而,什么我目前得到的是这样的:
问题是橙色和棕色/灰色面板应该占据第二列,但似乎只想在运行代码时占用第三列。
,我使用的布局代码:
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点,而且我度过了漫长的一天。很可能很快就会碰到干草。
UPDATE:
看来,如果我改变了棕/灰面板的gridwidth,似乎一切都正确对齐,但我最终在我的布局讨厌的差距。在这里:
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的一些奇怪的行为,我将不得不忍受?
不幸的是,多亏了我的编辑,我已经失去了Bala R善意地放在那里的所有嵌入。所以,我们回到了图像的链接上,恐怕。而现在看来,我不能发布两个以上的超链接,那么该链接在最近一个被杀害,你需要复制和粘贴。
谢谢,山姆
ŭlo谢谢你,我现在明白了这个问题。 – 2011-03-27 14:54:40