2016-08-01 39 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