在GridLayout中调整单元格大小

时间:2015-05-31 13:16:36

标签: java swing layout-manager grid-layout

与标题建议一样,我想调整网格组件的大小,这样如果网格内部有一个小组件,它将删除多余的空间。

以下是目前的示例:

What it currently looks like.

相反它应该是这样的:

This.

我正在使用GridLayout。看起来有点像:

grid = new JPanel(new GridLayout(1, 3));
grid.add(JPanel1);
grid.add(Jpanel2);
grid.add(JTextField);`

有什么想法吗?

编辑:我通过使用MigLayout(感谢@Blip)并覆盖首选大小来解决问题。然后Blip告诉我不要覆盖,而是使用MigLayout的附加功能来获得相同的结果。虽然这样可行,但我还决定改变JTextField的高度。否则我会使用其他解决方案。但感谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

  

所有其他的将JTextField缩小到1像素宽。

不,他们没有。首先,请确保使用以下代码创建文本字段:

JTextField textField = new JTextField(10);

该数字将在所有文本字段中确定合理的首选大小。

然后,您可以使用FlowLayout,它始终尊重首选尺寸。

或者您可以使用GridBagLayout,它更灵活,但使用起来也更复杂。是的,当你使用GridBagLayout时,如果你将名气缩小得太小,那么组件将以最小尺寸显示,这可能是文本字段的几个像素。

关键是使用frame.pack(),因此组件以其首选大小显示,因此您不必担心组件缩小。

阅读Layout Managers上的Swing教程以获取更多信息。