2010-01-12 60 views
7

爲那些熟悉一個問題MigLayoutMigLayout使用

遺憾不能認爲對於這個問題更合適的名字......

我試圖創建一個佈局,將結束看起來像以下:

+---------+---------+ 
| btn1 | btn2 | 
+---------+---------+ 
|     | 
|  btn3  | 
|     | 
+-------------------+ 

當窗口被調整大小BTN1和BTN2應該充滿x軸(各佔一半)的組件,並btn3應填寫兩個x軸和所有可用空間的部件一世在Y軸。

你會怎麼做到這一點?

這裏的一些代碼開始:

public static void main(String[] args) 
{ 
    JFrame window = new JFrame(); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Container cp = window.getContentPane(); 

    cp.setLayout(new MigLayout("")); 
    cp.add(new JButton("btn1"), ""); 
    cp.add(new JButton("btn2"), ""); 
    cp.add(new JButton("btn3"), ""); 

    window.pack(); 
    window.setVisible(true); 
} 
+0

如果您不熟悉MigLayout,請在回答之前測試您的代碼。 (是更好的joachim?) – pstanton 2010-01-13 00:31:13

回答

26

這是很容易在MigLayout:

setLayout(new MigLayout("fill")); 

add(new JButton("button 1"), "w 50%"); 
add(new JButton("button 2"), "w 50%, wrap"); 
add(new JButton("button 3"), "grow, push, span"); 

如果你讀pstanton的原來的問題,我覺得所需的佈局指示非常接近他如何制定它。這就是我喜歡MigLayout :)

+0

謝謝你!理解這個問題的人! – pstanton 2010-01-25 23:01:17

+0

非常聰明 - 以前不知道w的50%。謝謝。 – I82Much 2011-01-12 22:42:55

2

我從來沒有用過miglayout,但它應該是這樣的:

... 
cp.add(new JButton("btn1")); 
cp.add(new JButton("btn2"), "wrap"); 
cp.add(new JButton("btn3"), "span"); 
... 
+0

不知道爲什麼這是downvoted,但它看起來像一個正確的方法。查看文檔,您還需要將其添加到構造函數中:new MigLayout(「」,「[grow] [grow]」,「」); – 2010-01-13 01:23:11

+0

downvoted,因爲它不回答這個問題。爲什麼upvote,如果你沒有測試的答案,並不知道它的作品?! – pstanton 2010-01-13 03:58:58

+0

朝聖者,即使你的建議btn1&btn2不能水平縮放,而btn3不能水平或垂直縮放。 – pstanton 2010-01-13 04:02:06

-1

那麼,你想是這樣的:

example image http://img22.imageshack.us/img22/9479/capturadepantalla201001g.png

非常Swing Layout Demo有它,在「流向」

下面是該樣本代碼:

JTabbedPane tabbedPane = new JTabbedPane(); 

tabbedPane.addTab("Layout: flowx, Cell: flowx", createFlowPanel("", "flowx")); 
tabbedPane.addTab("Layout: flowx, Cell: flowy", createFlowPanel("", "flowy")); 
tabbedPane.addTab("Layout: flowy, Cell: flowx", createFlowPanel("flowy", "flowx")); 
tabbedPane.addTab("Layout: flowy, Cell: flowy", createFlowPanel("flowy", "flowy")); 

public JPanel createFlowPanel(String gridFlow, String cellFlow) { 
    MigLayout lm = new MigLayout("center, wrap 3," + gridFlow, 
           "[110,fill]", 
           "[110,fill]"); 

    JPanel panel = createTabPanel(lm); 

    for (int i = 0; i < 9; i++) { 
     JButton b = createButton("" + (i + 1)); 
     b.setFont(b.getFont().deriveFont(20f)); 
     panel.add(b, cellFlow); 
    } 

    JButton b = createButton("5:2"); 
    b.setFont(b.getFont().deriveFont(20f)); 
    panel.add(b, cellFlow + ",cell 1 1"); 

    return panel; 
} 
+0

哦,我還不能發佈圖片,只需刪除參考文獻中的空白即可看到它。 – OscarRyz 2010-01-12 23:58:42

+0

是啊仍然不是我在說什麼,加上你發佈的代碼是不完整的,並沒有證明我在問什麼。 – pstanton 2010-01-13 00:09:13