2016-08-01 56 views
0

我想弄清楚爲什麼添加一個JPanel後無法換行。我的目標是讓一個類構建我的JPanel,然後將其添加到主屏幕,並將所有JPanel堆疊在一起。如果我用JLables替換JPanel,我可以得到這個工作。這裏是我目前的結果:Java Miglayout包裝JPanels

JPanel zPanel = new JPanel(); 
    for(int i = 0; i < zones.size(); i++) 
    { 
     JLabel zLabel = new JLabel(zones.get(i)); 
     zPanel.add(zLabel); 
     grid.add(zPanel,"wrap"); 
    } 

Failed Test

什麼我試圖做的事:

for(int i = 0; i < zones.size(); i++) 
    { 
     JLabel zLabel = new JLabel(zones.get(i)); 
     grid.add(zLabel,"wrap"); 
    } 

Passed Test

回答

0

如果您要添加到JLabelJPanel,那麼你需要使其包裹在JPanel本身內。並且,當所有的孩子都被填充時,添加zPanel

JPanel zPanel = new JPanel(new MigLayout("wrap 1"); 
for(int i = 0; i < zones.size(); i++) 
{ 
    JLabel zLabel = new JLabel(zones.get(i)); 
    zPanel.add(zLabel); 
} 
grid.add(zPanel,"wrap"); 
+0

問題不是JLabels沒有包裝。正如在底部圖片中看到的那樣正常工作。問題是JPanels沒有包裝,因爲每個JLabel都有一個單獨的JPanel。 – Ardel

+1

上的代碼,我看到只有在zpanel聲明,因此,所有JLabel具有相同的JPanel父級。 – Lee

+0

* Facepalm *就是這樣。記住編輯你的答案,以便我可以標記正確的? – Ardel