2013-07-08 89 views
5

我试图布局组件并希望以特定方式设置宽度。据我所知,miglayout设置宽度,如“宽度最小:前:最大”。所以,在我的情况,我想以下几点:使用miglayout设置宽度

layout explained

我的问题是与COMP2。它停止增长大约200px后,我不明白为什么,因为我没有指定最大宽度。

我也检查了miglayout摆动演示,但他们没有我那里的确切情况。他们有一个无限宽度,但没有指定最小宽度。

为了确保面板展开,我将面板的背景设置为灰色,并且我可以看到它展开时没有任何问题。

请告诉我,如果有什么需要澄清,我会很乐意尝试解释更好。

编辑:这里是一个SSCCE

import java.awt.Color; 
import javax.swing.*; 
import net.miginfocom.swing.MigLayout; 

public class SSCCE { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(new MigLayout(
       "", 
       "[grow, fill]", 
       "")); 
     panel.setBackground(Color.LIGHT_GRAY); 

     JButton comp1 = new JButton("Comp1"); 
     JButton comp2 = new JButton("Comp2"); 
     JButton comp3 = new JButton("Comp3"); 

     panel.add(comp1, "width 50:150:150, growx"); 
     panel.add(comp2, "growx"); 
     panel.add(comp3, "width 50:70:70, growx");  

     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true);  
    } 
} 

我不会成长,但我想它采取一切可用的空间,而事实并非如此。它可以与面板上的设置有关吗?

编辑2:有了这个代码:

panel.add(comp1, "width 50:150:150"); 
panel.add(comp2, "width 10:n:n"); 
panel.add(comp3, "width 50:70:70, right"); 

我得到这个:

enter image description here

但我想中间的组件占用全部可用空间。

+0

_stops后约200px_增长无法重现:所有的增长(在结尾部分是同样大小的)最好的证明演示行为 – kleopatra

+0

现在我已经加入了一个SSCCE SSCCE。任何帮助表示赞赏。 :) – Goatcat

+0

不太明白为什么你让所有的列增长,如果你只想让其中一个占据多余的空间 – kleopatra

回答

6

感觉自由:-)

这里有一个片段,让所有的额外空间的中间列。

JPanel panel = new JPanel(new MigLayout(
     "debug", 
     "[][grow, fill][]", 
     "")); 
JButton comp1 = new JButton("Comp1"); 
JButton comp2 = new JButton("Comp2"); 
JButton comp3 = new JButton("Comp3"); 

panel.add(comp1, "width 50:150:150"); 
panel.add(comp2); 
panel.add(comp3, "width 50:70:70");  
+0

Wham bam,问题解决了。谢谢你,先生! :D – Goatcat

+3

很高兴我能帮忙,善良的小姐:-) – kleopatra