猿问

JFrame 和 JPanel 大小问题

我正在尝试编写包含 JPanel 的 JFrame。JPanel 中有一个 JTextField 数组。所以,我的 GUI 看起来像:-

我没有使用布局管理器,并已将 JFrame 和 JPanel 设置为 null。我正在手动调整这些组件的大小。

您可以看到 JPanel 的右手部分被切掉了,即使我使用了与包含 JFrame 相同的大小。

代码如下所示:-

http://img2.mukewang.com/6182312b0001ceb207800585.jpg

我通过将 JTextField 数组中的列数乘以 JTextField 的宽度来计算 JPanel 所需的宽度。除此之外,还需要添加 JTextFields 之间的每个间隙的宽度(其中会有 (columnNumber - 1)),以及两个边框间隙。

我已经这样做了,但是右手边的边界间隙被切断了,正如你从图中看到的那样。

如果我向 panelWidth 添加一些随机数量,那么您可以在那里看到右手间隙,但我的问题是我在这里遗漏了什么?如果 JFrame 边和 JPanel 大小相同,这应该肯定有效,因为我也将它们打印出来,并且打印出来的数字相同。


ITMISS
浏览 476回答 2
2回答

繁花不似锦

我希望行/列值的任意组合允许在每个 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);如果您打包框架,网格面板将以首选大小显示。如果您调整框架的大小,网格面板将在包装面板中保持居中。

一只名叫tom的猫

该 GUI 的顶部非常适合网格布局,底部带有“开始/取消”按钮 - 流布局。将网格布局放在CENTER边框布局中,将流布局放在 中PAGE_END,打包顶级容器(对于非裁剪,“正确大小”)并完成工作。它可能最终看起来像这样:
随时随地看视频慕课网APP

相关分类

Java
我要回答