首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MigLayout特定布局

MigLayout特定布局
EN

Stack Overflow用户
提问于 2014-03-03 23:06:43
回答 1查看 47关注 0票数 0

我一直在尝试用MigLayout做一个由3个面板组成的布局,一个在右边,一个在顶部,还有一个填充了其余的空间。

如下所示:

EN

回答 1

Stack Overflow用户

发布于 2014-07-08 17:08:40

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

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

代码语言:javascript
复制
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);
            }
        });
    }
}

这三个面板停靠在东部、北部和中心。可以使用间隙约束创建嵌板之间的其他空间。

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

代码语言:javascript
复制
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);
            }
        });
    }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22150179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档