为了账号安全,请及时绑定邮箱和手机立即绑定

JFrame 和 JPanel 大小问题

JFrame 和 JPanel 大小问题

ITMISS 2021-11-03 14:49:51
我正在尝试编写包含 JPanel 的 JFrame。JPanel 中有一个 JTextField 数组。所以,我的 GUI 看起来像:-我没有使用布局管理器,并已将 JFrame 和 JPanel 设置为 null。我正在手动调整这些组件的大小。您可以看到 JPanel 的右手部分被切掉了,即使我使用了与包含 JFrame 相同的大小。代码如下所示:-我通过将 JTextField 数组中的列数乘以 JTextField 的宽度来计算 JPanel 所需的宽度。除此之外,还需要添加 JTextFields 之间的每个间隙的宽度(其中会有 (columnNumber - 1)),以及两个边框间隙。我已经这样做了,但是右手边的边界间隙被切断了,正如你从图中看到的那样。如果我向 panelWidth 添加一些随机数量,那么您可以在那里看到右手间隙,但我的问题是我在这里遗漏了什么?如果 JFrame 边和 JPanel 大小相同,这应该肯定有效,因为我也将它们打印出来,并且打印出来的数字相同。
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我希望行/列值的任意组合允许在每个 JTextField 之间保持恒定的垂直和水平距离,并为每个文本字段保持默认大小。


GridLayout 允许您指定每个组件之间的水平/垂直间隙,并允许您控制网格的大小。


然后,您可以使用 GridLayout 在尊重网格大小的面板中包装面板。


例如你可以这样做:


JPanel grid = new JPanel( new GridLayout(...) );


JPanel wrapper = new JPanel( new GridBagLayout() );

wrapper.add(grid, new GridBagConstraints());


frame.add(wrapper, BorderLayout.CENTER);

如果您打包框架,网格面板将以首选大小显示。


如果您调整框架的大小,网格面板将在包装面板中保持居中。


查看完整回答
反对 回复 2021-11-03
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

该 GUI 的顶部非常适合网格布局,底部带有“开始/取消”按钮 - 流布局。将网格布局放在CENTER边框布局中,将流布局放在 中PAGE_END,打包顶级容器(对于非裁剪,“正确大小”)并完成工作。

它可能最终看起来像这样:

//img1.sycdn.imooc.com//618231450001f2b103070120.jpg

查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 475 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信