为了账号安全,请及时绑定邮箱和手机立即绑定

在Swing GUI中提供空白区域

在Swing GUI中提供空白区域

大话西游666 2019-05-20 16:58:24
没有空白区域的GUI显得“拥挤”。如何在不借助明确设置组件的位置或大小的情况下提供空白区域?
查看完整描述

4 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

MigLayout有多种创造空间的方式。(在此布局中,空间称为间隙。)可以使用布局约束在最高级别创建间隙,可以在行和列之间创建间隙,也可以在具有组件约束的各个组件之间设置间隙。在名为insets的容器的边界周围也存在特定的间隙,这些容器具有自己的特定关键字。


以下示例创建所有这些类型的差距:


package com.zetcode;


import java.awt.EventQueue;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import net.miginfocom.swing.MigLayout;



public class MigLayoutGaps2 extends JFrame {


    public MigLayoutGaps2() {


        initUI();


        setTitle("Gaps");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLocationRelativeTo(null);

    }


    private void initUI() {


        JPanel base = new JPanel(new MigLayout("flowy, ins 30, gap 15"));

        setContentPane(base);


        JPanel pnl1 = new JPanel();

        pnl1.setBorder(

                BorderFactory.createTitledBorder("Grid gaps")

        );


        pnl1.setLayout(new MigLayout("gap 5 5, ins 10, wrap 3"));


        pnl1.add(new JButton("1"));

        pnl1.add(new JButton("2"));

        pnl1.add(new JButton("3"));

        pnl1.add(new JButton("4"));

        pnl1.add(new JButton("5"));

        pnl1.add(new JButton("6"));


        JPanel pnl2 = new JPanel();

        pnl2.setBorder(

                BorderFactory.createTitledBorder("Column gaps")

        );


        pnl2.setLayout(new MigLayout("wrap 3", "[]10[]"));


        JLabel lbl1 = new JLabel();

        lbl1.setBorder(

            BorderFactory.createEtchedBorder()

        );


        JLabel lbl2 = new JLabel();

        lbl2.setBorder(

            BorderFactory.createEtchedBorder()

        );


        JLabel lbl3 = new JLabel();

        lbl3.setBorder(

            BorderFactory.createEtchedBorder()

        );        


        pnl2.add(lbl1, "w 40, h 110");

        pnl2.add(lbl2, "w 40, h 110");

        pnl2.add(lbl3, "w 40, h 110");


        JPanel pnl3 = new JPanel();

        pnl3.setBorder(

                BorderFactory.createTitledBorder("Row gaps")

        );


        pnl3.setLayout(new MigLayout("wrap", "", "[]15[]"));


        JLabel lbl4 = new JLabel();

        lbl4.setBorder(

            BorderFactory.createEtchedBorder()

        );


        JLabel lbl5 = new JLabel();

        lbl5.setBorder(

            BorderFactory.createEtchedBorder()

        );


        JLabel lbl6 = new JLabel();

        lbl6.setBorder(

            BorderFactory.createEtchedBorder()

        );        


        pnl3.add(lbl4, "w 150, h 20");

        pnl3.add(lbl5, "w 150, h 20");

        pnl3.add(lbl6, "w 150, h 20");        


        JPanel pnl4 = new JPanel();

        pnl4.setBorder(

                BorderFactory.createTitledBorder("Component gaps")

        );


        pnl4.setLayout(new MigLayout());


        pnl4.add(new JLabel("Name:"), "gapright 5");

        pnl4.add(new JTextField(10), "gapbottom 20, gaptop 20");


        base.add(pnl1);

        base.add(pnl2);

        base.add(pnl3);

        base.add(pnl4);


        pack();

    }


    public static void main(String[] args) {


        EventQueue.invokeLater(new Runnable() {

            @Override

            public void run() {

                MigLayoutGaps2 ex = new MigLayoutGaps2();

                ex.setVisible(true);

            }

        });

    }

}

我们在布局中有四个面板。每个小组都有一名MigLayout经理。


JPanel base = new JPanel(new MigLayout("flowy, ins 30, gap 15"));

此行创建容器插图和面板之间的垂直间隙。


pnl1.setLayout(new MigLayout("gap 5 5, ins 10, wrap 3"));

在这里,我们为整个网格结构应用间隙,并设置容器间隙。


pnl2.setLayout(new MigLayout("wrap 3", "[]10[]"));

此行会在列之间创建间隙。


pnl3.setLayout(new MigLayout("wrap", "", "[]15[]"));

使用此代码定义行间隙。


pnl4.add(new JLabel("Name:"), "gapright 5");

pnl4.add(new JTextField(10), "gapbottom 20, gaptop 20");

最后,可以在各个组件之间创建间隙。


查看完整回答
反对 回复 2019-05-20
  • 4 回答
  • 0 关注
  • 950 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号