2016-11-06 23 views
0

我剛開始使用MigLayout。MigLayout包裝兩行

我已經閱讀了一些文檔,包括MigLayout的快速入門指南,以及搜索一些SO問題,但我沒有找到答案。我確定這是明顯的,但就像我說的,這是我第一次使用這個佈局管理器。

我正在嘗試使我的MigLayout中的其中一行高出其他兩倍。

我的代碼開始是:

public GameWindow() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(new MigLayout("fill")); 
    add(new PanelHud(), "grow, span 2, wrap"); 
    add(new PanelWorldView(), "grow"); 
    add(new PanelDetailView(), "grow, wrap"); 
    add(new PanelMenu(), "grow, span 2"); 
    pack(); 
    setVisible(true); 
} 

主要生產:

enter image description here

這是一個良好的開端,但我想要的是中間一排是兩個時代一樣高頂部和底部的行。起初,我以爲我可以只讓中間的要素跨兩行,但沒有奏效:

public GameWindow() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(new MigLayout("fill")); 
    add(new PanelHud(), "grow, span 2, wrap"); 
    add(new PanelWorldView(), "grow, span 1 2"); 
    add(new PanelDetailView(), "grow, span 1 2, wrap"); 
    add(new PanelMenu(), "grow, span 2"); 
    pack(); 
    setVisible(true); 
} 

enter image description here

它看起來像中間行確實是正確的尺寸,但底部行流離失所。我怎樣才能解決這個問題?

回答

1

3個可能的解決方案(我可能會有點過度)。

使用自動換行,以便miglayout檢測全行本身:

setLayout(new MigLayout("fill, wrap 2")); 
add(new PanelHud(), "grow, span 2"); 
add(new PanelWorldView(), "grow, span 1 2"); 
add(new PanelDetailView(), "grow, span 1 2"); 
add(new PanelMenu(), "grow, span 2"); 

基地,你的佈局對細胞:

setLayout(new MigLayout("fill", "[][]", "[][][][]")); 
add(new PanelHud(), "grow, cell 0 0 2 1"); 
add(new PanelWorldView(), "grow, cell 0 1 1 2"); 
add(new PanelDetailView(), "grow, cell 1 1 1 2"); 
add(new PanelMenu(), "grow, cell 0 3 2 1"); 

使用成長重量(雖然這似乎並沒有保持2:1的比例對於小窗戶尺寸):

setLayout(new MigLayout("fill", "[][]", "[grow 100][grow 200][grow 100]")); 
add(new PanelHud(), "grow, span 2, wrap"); 
add(new PanelWorldView(), "grow"); 
add(new PanelDetailView(), "grow, wrap"); 
add(new PanelMenu(), "grow, span 2");