我正在尝试编写包含JPanel的JFrame。在JPanel中是JTextField的数组。因此,我的GUI看起来像:-
我没有使用布局管理器,并且已将JFrame和JPanel设置为null。我正在手动调整这些组件的大小。
即使我使用与包含的JFrame相同的大小,也可以看到JPanel的右侧部分被切掉了。
代码显示如下:-
我已经通过将JTextField数组中的列数乘以JTextField的宽度来计算JPanel的所需宽度。除此之外,还需要添加JTextFields之间的每个间隙的宽度(其中有(columnNumber-1))以及两个边界间隙。
我已经这样做了,但是如右图所示,右侧的边框间隙被切掉了。
如果我在panelWidth中添加一些随机量,那么您可以在其中看到右侧的间隙,但是我的问题是我在这里缺少什么?如果JFrame端和JPanel大小相同(就像我也将它们都打印出来一样,并且打印输出给出相同的数字),那么这应该可以正常工作。
杰里米
答案 0 :(得分: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);
如果打包框架,网格面板将以首选尺寸显示。
如果调整框架的大小,则网格面板将保持在包装面板的中心。
答案 1 :(得分:1)