Helenr
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");最后,可以在各个组件之间创建间隙。