2010-12-21 34 views
2

什麼是標準的Java Swing最簡單的方法以這樣的方式排列三個部分組成:Swing:對齊[動態] [靜態] [動態]組件寬度的最簡單方法?

  • 動態寬度Component1Component3調整爲等於

  • Component2(介於之間)有常數寬度?

想象一下,我們有一些可調整大小的JPanel(例如JFrame內部)。

小的寬度應該是這樣的:

[----------------whole JPanel----------------] 
[--Component1--] [Component2] [--Component3--] 

大寬度應該是這樣的:

[------------------------whole JPanel------------------------] 
[------Component1------] [Component2] [------Component3------] 

注:我只是 「造模,和差錯」 與GroupLayout時間過長。

回答

1

一個選項是使用GridBagLayout。一個快速和骯髒的片段,讓你開始:

GridBagConstraints gbc; 
final int A_CENTER = GridBagConstraints.CENTER; // anchor: center 
final int F_NONE = GridBagConstraints.NONE; // fill: none 
final int F_DX = GridBagConstraints.HORIZONTAL; // fill: dx only 
final Insets IN_0 = new Insets(0, 0, 0, 0); // empty insets 

setLayout(new GridBagLayout()); 
gbc = new GridBagConstraints(0, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0); 
add(new JButton("test1"), gbc); 
gbc = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, A_CENTER, F_NONE, IN_0, 0, 0); 
add(new JButton("test2"), gbc); 
gbc = new GridBagConstraints(2, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0); 
add(new JButton("test1"), gbc); 

顯然有很多更可以用網格包做的,你需要做一些拋光,達到您想看什麼,但這應該讓你開始。

GBC構造函數中的第五個參數是在x方向上拉伸的權重。設置它們相等,並強制中心組件不能伸展(F_NONE),這樣做是骯髒的工作。

+0

您可以重複使用的GridBagConstraints:P。 我會做左側被定位西,右東錨和中間一箇中心 – 2010-12-21 15:28:18

+0

有過多如何使用GridBags :)我只是剪切和粘貼最近使用過的東西。就重用GBC而言......我覺得它使得代碼不易讀。很難看出你是否忘記了設置其中一個限制。 – 2010-12-21 15:34:12

1

MigLayout經理怎麼樣?它不是JRE的一部分,但它是一個出色的佈局管理器,它可以使用比GridBag更少的代碼輕鬆生成所需的佈局。看看他們的demo

忍不住張貼totally grid bag卡通...享受(: