【问题标题】:MigLayout - panel with grow and pushMigLayout - 带有增长和推送的面板
【发布时间】:2018-06-09 04:40:58
【问题描述】:

我正在尝试使用 MigLayout 创建一个面板,分为三行。第一行和最后一行的 pushY 应为某个比率(在本例中为 2f),中间的行应尽可能增长以占据剩余空间。

但是,在某些情况下,最后一行(例如,它本身就是一个面板)中没有任何组件。在这种情况下,我希望第二行占据所有高度,但我无法实现。

请注意,由于其他流相关性,使其不可见是不可能的。

我已在此处附上代码:

public class TestClass {

public static void main(String[] args) {
    createPanel(true);
    createPanel(false);
}

private static void createPanel(boolean removeAll) {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0")));

    panel.add(new JLabel("first row"), new CC().grow().newline().pushY(2f));

    JTextArea abc = new JTextArea("abc");
    abc.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
    panel.add(abc, new CC().push().grow().newline());

    JPanel pnl = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0")));
    pnl.add(new JLabel("aaa"), new CC());
    pnl.add(new JLabel("bbb"), new CC().newline());
    pnl.add(new JLabel("ccc"), new CC().newline());
    panel.add(pnl, new CC().grow().newline().pushY(2f));
    if (removeAll) {
        pnl.removeAll();
    }
    frame.setContentPane(panel);
    frame.setSize(100,800);
    frame.setVisible(true);
}

}

【问题讨论】:

    标签: java swing layout-manager miglayout


    【解决方案1】:

    为此使用dock 功能,因此顶部将停靠在北边,底部停靠在南边,中间行将在它们之间生长。 http://www.miglayout.com/QuickStart.pdf对接教程见第5页。

    【讨论】:

    • 谢谢你的回答,实际上我需要所有三行来增长,但有一定的比例。如果我只是将顶部向北停靠,底部向南停靠并仍然保持 pushY,这对我没有帮助,因为顶部和底部行不会增加它们的大小。
    猜你喜欢
    • 2012-09-04
    • 2012-12-20
    • 2016-04-26
    • 2010-11-12
    • 2018-08-01
    • 2013-06-23
    • 1970-01-01
    • 2016-04-27
    • 2014-07-16
    相关资源
    最近更新 更多