2010-04-09 23 views
4

我正在一個MigLayout形式與3列4行內兩個元素,像這樣:的Java Swing MigLayout,圍繞跨區排

"wrap 3", 
"[15%] 15px [45%] 15px [40%]", 
"20 [] 15 [] 15 [grow,fill] 15 []" 

現在我的目標是有它看起來像這樣:

.------------------------------------. 
| 15% |  45%  |  40%  | 
|------------------------------------| 
|  |    |    | 
|------------------------------------| 
|  |    |    | 
|------------------------------------| 
|   button,button   | 
`------------------------------------´ 

我想中心的最後一排的按鈕,所以我認爲它首先要求我跨越第4行3列到一個與按鈕上的"span 3, center"組件約束。

這個效果很好,只有一個按鈕,但我在解決如何添加第二個按鈕時遇到問題,同時保持兩個按鈕同時位於同一行中。如果我在第二個按鈕上添加相同的約束條件,它會完美地居中在下一行的第一個按鈕下面。

回答

4

的解決方案是跨越,並在同一時間分裂:拆分定義應該住在跨區電池組件的數量:

panel.add(firstButton, "span, split 2, center"); 
panel.add(secondButton); 

旁白:不計數的默認值跨度爲較高的數字,它effectly意味着「所有」

+0

@mKorbel是的,謝謝你的擡頭:-)請隨時編輯未來的疏忽 – kleopatra 2012-11-23 16:56:57

2

這不是理想的,但你可以在兩個按鈕添加到一個新JPanel,然後窩那的JPanel與「跨度3,中心」

我苦苦思考的另一種方式的現有佈局內。

+0

我最終編寫它就像這樣,它很簡單。儘管我懷疑MigLayout的某個地方可能是一種沒有容器面板的方法。 :) – Fuu 2010-04-11 17:55:56

0

,你可以嘗試把右邊兩個箱子左右兩側,將在中間這樣的增長或按動按鈕:

pane.setLayout(new MigLayout("fill")); 
pane.add(Box.createHorizontalBox(), "push"); 
pane.add(new JButton("asdf")); 
pane.add(new JButton("zxcv")); 
pane.add(Box.createHorizontalBox(), "push,wrap");