2012-08-02 71 views
1

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

回答

4

很难想象你想要什么,但在这里是从Oracle的摘录,可以帮助你:

方案:你需要尽可能多的空间来显示一个组成部分,它可以得到的。

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

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

方案:你需要在其自然大小显示在一个紧凑的排几个组件。

考虑使用JPanel将组件组合并使用JPanel的默认FlowLayout管理器或BoxLayout管理器。 SpringLayout也适用于此。

方案:您需要的行和列,以显示相同尺寸的几个组件。

GridLayout是完美的。

方案:你需要在行或列中显示几个组件,可能有数量不等的定制校准自定义组件的尺寸之间的空间,或。

BoxLayout是完美的。

方案:需要显示对齐的列,如在形状类似的界面,其中标签的列用于描述在相邻列文本字段。

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

场景:您有复杂的布局和许多组件。

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

来源:Oracle: Using Layout Managers

4

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

+0

这对齐按钮上方的表,但如果我想调整窗口的大小,表停在某一点调整,但需要的窗口的固定药水。它包裹在滚动窗格btw – Bober02 2012-08-02 14:40:55

+0

对不起,我的坏。正在使用北而不是中心。为什么它有所作为?在这两种情况下,我都告诉桌子来填充视口... – Bober02 2012-08-02 14:42:14

相关问题