我正在尝试布局组件,并希望以特定方式设置宽度。根据我的理解,miglayout设置宽度,如“width min:pref:max”。所以在我的情况下,我想要以下内容:
我的问题在于comp2。它在大约200px之后停止增长,我无法弄清楚为什么,因为我没有指定最大宽度。
我还检查了miglayout swing演示,但他们没有我的确切案例。它们的宽度不受限制,但不是指定的最小宽度。
为了确保面板展开,我将面板的背景设置为灰色,我可以看到它展开没有任何问题。
如果有任何需要澄清的话,请告诉我,我很乐意尝试更好地解释。
编辑:这是一个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");
我明白了:
但我希望中间组件占用所有可用空间。
答案 0 :(得分:7)
感觉自由: - )
这是一个片段,为中间列提供了所有额外的空间。
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");