我希望在一个面板中有一个JTable组件,占用窗口允许的空间。但是,在下面,我想添加另一个固定大小的面板,里面有几个按钮。使用哪种布局允许底部面板具有固定尺寸,同时允许JTable面板根据窗口的大小进行拉伸?
答案 0 :(得分:4)
实现它的最简单方法是使用BorderLayout
。把你的桌子放在中间位置。然后使用FlowLayout
创建另一个面板,并将其放在主面板的南边。
答案 1 :(得分:4)
很难直观地看到你想要的东西,但这里有一段可以帮助你的Oracle摘录:
场景:您需要在尽可能多的空间内显示组件。
如果它是其容器中唯一的组件,请使用GridLayout或BorderLayout。否则,BorderLayout或GridBagLayout可能会很好 匹配。
如果使用BorderLayout,则需要占用空间 中心的组成部分。使用GridBagLayout,您需要设置 组件的约束使得fill = GridBagConstraints.BOTH。 另一种可能性是使用BoxLayout,使空间饥渴 组件指定非常大的首选大小和最大大小。
场景:您需要在自然尺寸的紧凑行中显示一些组件。
考虑使用JPanel对组件进行分组,并使用JPanel的默认FlowLayout管理器或BoxLayout管理器。 SpringLayout对此也有好处。
场景:您需要在行和列中显示相同大小的几个组件。
GridLayout非常适合这种情况。
场景:您需要在行或列中显示一些组件,可能会在它们之间显示不同的空间量,自定义对齐或自定义组件大小。
BoxLayout非常适合这种情况。
场景:您需要显示对齐的列,就像在类似于表单的界面中一样,其中一列标签用于描述相邻列中的文本字段。
SpringLayout是一个很自然的选择。几个Tutorial示例使用的SpringUtilities类定义了一个makeCompactGrid 方法,让您轻松对齐多个行和列 组件。
场景:您有一个包含许多组件的复杂布局。
考虑使用非常灵活的布局管理器,例如 GridBagLayout或SpringLayout,或将组件分组为一个或 更多JPanels简化布局。如果你采取后一种方法,每一个 JPanel可能使用不同的布局管理器。