gpt4 book ai didi

java - 将 GridLayout JPanel 放入 GridBagLayout JFrame

转载 作者:行者123 更新时间:2023-12-01 13:16:14 24 4
gpt4 key购买 nike

我正在尝试使用 GridBagLayout 将两个 JPanel 放置到 JFrame 上。第一个 JPanel 使用 gridLayout 创建 35 列和 27 行的 JButton,宽度应为 JFrame 的 3/4。该面板需要填充可用的垂直空间。第二个 JPanel 也使用 gridLayout,并应填充主 JFrame 的最后 1/4。

不幸的是,我的第一个 JPanel (sPan) 甚至无法正确适应屏幕,并且迫使整个第二个 JPanel (cPan) 离开屏幕。如何限制这些值仅占据屏幕上允许的比例而不互相移动?

如果我在代码中使用带有背景颜色的空白 JPanel,一切都会完美运行:

Blank JPanel proportions[1]

但是,当我使用由 JButton 组成的 JPanel 时,比例会完全困惑:

JButtons JPanel proportions[2]

我推测当我实例化 sPan 对象时,它会调整每个按钮的大小以适应整个 JFrame 的大小。然后,当我实例化 cPan 对象并尝试将其放置在 sPan 对象旁边时,按钮不会调整自身大小以适应主 JFrame 中的附加面板。有人知道我该如何解决这个问题吗?

我必须使用 GridBagLayout 来完成此作业,因此不能选择使用普通的 gridLayout。任何有关正在发生的事情的提示将不胜感激。

最佳答案

你能简单地处理两列吗?第一个占用可用宽度的 5/6,第二个占用剩余的 1/6

您可以尝试以下方法:

final JPanel sPan = new JPanel();
sPan.setBackground(Color.RED);
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 5 / 6f; // change this value...
constraints.weighty = 1.00;
add(sPan, constraints);

final JPanel cPan = new JPanel();
cPan.setBackground(Color.BLUE);
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1 / 6f; // ... and this one.
constraints.weighty = 1.00;
add(cPan, constraints);

请注意:我用一些带有背景色的空JPanels替换了您的JPanels,所以即使这样您也可以看到发生了什么.

关于java - 将 GridLayout JPanel 放入 GridBagLayout JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444123/

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