gpt4 book ai didi

java - Java 列问题中的 GridBagLayout

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:17 26 4
gpt4 key购买 nike

我正在尝试使用 GridBagLayout 布局管理器来实现此目的:

enter image description here

但是,我目前得到的是:

enter image description here

问题是橙色和棕色/灰色面板应该占据第二列,但在运行代码时似乎只想占据第三列。

我用于布局的代码:

 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

以及面板代码(包括 Kevin S 建议的修改):

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 好心放入其中的所有嵌入。所以,恐怕我们又回到了图像链接。而且现在好像发不了两个以上的超链接,所以链接在最后一个被杀了,你需要复制粘贴进去。

谢谢,山姆

最佳答案

中间一列中的所有组件至少也在另一列中。所以 GridBagLayout 将中间列的首选宽度计算为 0,这就是您看到的效果。

如果你想确保你的中间列有更多的宽度,把一些只在这个列中的组件放在那里。

关于java - Java 列问题中的 GridBagLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5447050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com