1

我想在一个面板中有一个 JTable 组件,以占用窗口允许的尽可能多的空间。然而,在下面,我想添加另一个固定大小的面板,里面有几个按钮。使用哪种布局来允许底部面板具有固定大小,同时允许 JTable 面板根据窗口大小进行拉伸?

4

2 回答 2

4

实现它的最简单方法是使用BorderLayout. 把你的桌子放在中间。然后创建另一个面板FlowLayout并将其放在主面板的南面。

于 2012-08-02T14:29:47.463 回答
4

很难准确地想象你想要什么,但这里有一段 Oracle 的摘录可能会对你有所帮助:

场景:您需要在尽可能多的空间中显示组件。

如果它是其容器中的唯一组件,请使用 GridLayout 或 BorderLayout。否则,BorderLayout 或 GridBagLayout 可能是一个很好的匹配。

如果您使用 BorderLayout,则需要将需要空间的组件放在中心。使用 GridBagLayout,您需要为组件设置约束,以便 fill=GridBagConstraints.BOTH。另一种可能性是使用 BoxLayout,使需要空间的组件指定非常大的首选和最大尺寸。

场景:您需要以自然大小在紧凑的行中显示一些组件。

考虑使用 JPanel 对组件进行分组,并使用 JPanel 的默认 FlowLayout 管理器或 BoxLayout 管理器。SpringLayout 对此也有好处。

场景:您需要在行和列中显示几个相同大小的组件。

GridLayout 非常适合这个。

场景:您需要在一行或一列中显示一些组件,它们之间可能有不同的空间量、自定义对齐方式或自定义组件大小。

BoxLayout 非常适合这个。

场景:您需要显示对齐的列,例如在类似表单的界面中,其中一列标签用于描述相邻列中的文本字段。

SpringLayout 是一个自然的选择。几个教程示例使用的 SpringUtilities 类定义了一个 makeCompactGrid 方法,该方法使您可以轻松地对齐组件的多行和多列。

场景:您有一个包含许多组件的复杂布局。

考虑使用非常灵活的布局管理器,例如 GridBagLayout 或 SpringLayout,或者将组件分组到一个或多个 JPanel 中以简化布局。如果您采用后一种方法,每个 JPanel 可能会使用不同的布局管理器。

资料来源: Oracle:使用布局管理器

于 2012-08-02T14:43:42.213 回答