如何在Java中强制组件在MigLayout中增长

如何在Java中强制组件在MigLayout中增长,java,swing,layout,miglayout,Java,Swing,Layout,Miglayout,我有一个组件,它由各种组件组成,例如复选框、滑块和一些按钮。我想将其添加到滚动窗格中,并使滑块增长以填充所有剩余空间。这没有问题,因为此代码演示了: public static void main(String[] args) { JFrame f = new JFrame("Test"); JPanel c = new JPanel(new MigLayout( "", "[]5[]10[grow]10[]0[]

我有一个组件,它由各种组件组成,例如复选框、滑块和一些按钮。我想将其添加到滚动窗格中,并使滑块增长以填充所有剩余空间。这没有问题,因为此代码演示了:

 public static void main(String[] args) {
    JFrame f = new JFrame("Test");
    JPanel c = new JPanel(new MigLayout(
           "",          
           "[]5[]10[grow]10[]0[]0[]0[]",
           "[]"
    ));
    c.add(new JCheckBox(""));
    c.add(new JLabel("Name"));
    c.add(new JSlider());
    c.add(new JButton("1"));
    c.add(new JButton("2"));
    c.add(new JButton("3"));
    c.add(new JButton("4"));
    f.getContentPane().add(new JScrollPane(c));
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.pack();
    f.setVisible(true);
 }
如果运行此选项并调整帧大小,滑块将填充所有空间。我的问题在于,我想将我的组件(带滑块的组件)添加到另一个包含此组件的不同实例的组件中。例如,它将包含3或4个组件,其中一个在另一个的下面。我认为这会奏效:

 public static void main(String[] args) {
    JFrame f = new JFrame("Test");
    JPanel c = new JPanel(new MigLayout(
           "",          
           "[]5[]10[grow]10[]0[]0[]0[]",
           "[]"
    ));
    c.add(new JCheckBox(""));
    c.add(new JLabel("Name"));
    c.add(new JSlider());
    c.add(new JButton("1"));
    c.add(new JButton("2"));
    c.add(new JButton("3"));
    c.add(new JButton("4"));
    JPanel a = new JPanel(new MigLayout("wrap 1"));
    a.add(c);
    f.getContentPane().add(new JScrollPane(a));
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.pack();
    f.setVisible(true);
 }

但事实并非如此。想知道为什么以及如何修复它吗?

尝试将
JPanel a
声明更改为:

JPanel a = new JPanel(new MigLayout("wrap 1", "[grow,fill]"));

当我剪切并粘贴代码时,滑块没有增长。我必须给它添加一个
“growx”
约束。这很奇怪……你使用的是什么mig版本和什么java版本?(还有什么操作系统?)啊哈!谢谢我需要两种mig布局上的“填充”参数,但它可以工作。:)