【问题标题】:How to force a component to grow in MigLayout in Java如何在 Java 的 MigLayout 中强制组件增长
【发布时间】:2010-12-07 08:08:00
【问题描述】:

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

 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);
 }

但事实并非如此。关于为什么以及如何解决它的任何想法?

【问题讨论】:

  • 当我剪切和粘贴该代码时,滑块没有变大。我必须给它添加一个"growx" 约束。
  • 这很奇怪......你用什么mig版本和什么java版本? (还有什么操作系统?)

标签: java swing layout miglayout


【解决方案1】:

尝试将JPanel a 声明更改为:

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

【讨论】:

  • 啊哈!谢谢...我需要两个 Mig 布局上的“填充”参数,但它可以工作。 :)
猜你喜欢
  • 2018-08-01
  • 1970-01-01
  • 2013-07-16
  • 2010-11-12
  • 1970-01-01
  • 2013-06-23
  • 2016-04-27
  • 2014-07-16
  • 2013-06-15
相关资源
最近更新 更多