【问题标题】:MigLayout Specific LayoutMigLayout 特定布局
【发布时间】:2014-07-08 17:08:39
【问题描述】:

我一直在尝试使用 MigLayout 制作一个由 3 个面板组成的布局,一个在右侧,一个在顶部,一个填充其余空间。

像这样:

【问题讨论】:

    标签: java miglayout


    【解决方案1】:

    有几种可能的解决方案。我提供两个例子。 在这两个示例中,我们还设置了首选的宽度和高度 面板。通常,小组会从 他们的孩子。

    第一个布局是使用dock 约束完成的。

    package com.zetcode;
    
    import java.awt.EventQueue;
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import net.miginfocom.swing.MigLayout;
    
    
    public class MigLayoutThreePanels extends JFrame {
    
        public MigLayoutThreePanels() {
    
            initUI();
    
            setTitle("Three panels");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
        }
    
        private void initUI() {
    
            setLayout(new MigLayout());
    
            JPanel pnl1 = new JPanel();
            pnl1.setBorder(BorderFactory.createEtchedBorder());
            JPanel pnl2 = new JPanel();
            pnl2.setBorder(BorderFactory.createEtchedBorder());
            JPanel pnl3 = new JPanel();
            pnl3.setBorder(BorderFactory.createEtchedBorder());
    
    
            add(pnl2, "w 40, dock east");
            add(pnl1, "h 40, dock north");
            add(pnl3, "w 250, h 200, dock center");
    
            pack();
        }
    
    
        public static void main(String[] args) {
    
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    MigLayoutThreePanels ex = new MigLayoutThreePanels();
                    ex.setVisible(true);
                }
            });
        }
    }
    

    三个面板停靠在东、北和中心。之间的额外空格 可以使用间隙约束创建面板。

    在第二个例子中,我们使用了网格结构。

    package com.zetcode;
    
    import java.awt.EventQueue;
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import net.miginfocom.swing.MigLayout;
    
    
    public class MigLayoutThreePanels2 extends JFrame {
    
        public MigLayoutThreePanels2() {
    
            initUI();
    
            setTitle("Three panels");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
        }
    
        private void initUI() {
    
            setLayout(new MigLayout("gap 3 3"));
    
            JPanel pnl1 = new JPanel();
            pnl1.setBorder(BorderFactory.createEtchedBorder());
            JPanel pnl2 = new JPanel();
            pnl2.setBorder(BorderFactory.createEtchedBorder());
            JPanel pnl3 = new JPanel();
            pnl3.setBorder(BorderFactory.createEtchedBorder());
    
            add(pnl1, "h 40, growx");
            add(pnl2, "w 40, spany 2, growy, wrap");
            add(pnl3, "w 250, h 200, grow, push");
    
            pack();
        }
    
    
        public static void main(String[] args) {
    
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    MigLayoutThreePanels2 ex = new MigLayoutThreePanels2();
                    ex.setVisible(true);
                }
            });
        }
    }
    

    在本例中,我们还在单元格和容器插图之间设置了一些间隙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-02
      • 2018-03-27
      • 2016-12-07
      • 2012-07-04
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多