2012-08-02 50 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