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

时间:2009-10-16 10:56:43

标签: 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[]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);
 }

但事实并非如此。有关为何以及如何解决问题的想法?

1 个答案:

答案 0 :(得分:9)

尝试将JPanel a声明更改为:

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