在Swing中使用哪个面板

时间:2012-08-02 14:25:33

标签: java swing layout jtable jpanel

我希望在一个面板中有一个JTable组件,占用窗口允许的空间。但是,在下面,我想添加另一个固定大小的面板,里面有几个按钮。使用哪种布局允许底部面板具有固定尺寸,同时允许JTable面板根据窗口的大小进行拉伸?

2 个答案:

答案 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可能使用不同的布局管理器。

来源: Oracle: Using Layout Managers