初始化

  1. MigLayout layout = new MigLayout();
  2. MigLayout layout = new MigLayout("","","");

主要使用的是以上两种构造函数,第一种无参的就不用介绍了,主要是第二种。

第一个参数

第一个参数可以使用以下语句:

  • wrap + 数字 指定默认在第几个组件后进行换行,如: wrap 2 表示在第二个组件后进行分行。
  • insets + 数字 指定默认与边界的距离,有两种方式:insets 10 表示四边均为 10,insets 1 2 3 4 分别指示顶部、左侧、下部、右侧距离

第二个参数

指定横向的单元格的各个属性。每个单元格的属性用 [] 括起来。如 [][][] 表示一行有三个单元格。各单元格可以定制的属性如下:

  • grow x 方向按上一级的宽度进行延伸。注意如果此处不添加 grow,那么在添加组件的时候使用 growx 会没有效果。
  • 40! 表明该列的单元格宽度固定为 40。
  • 10:30:40 表明该列的单元格宽度最小为 10、最佳为 30、最大为 40。
  • ::40 表明该单元格最大值为40。其它也可以是 :30: 或者 30:: 等。
  • center/right/left 指定该组件在水平方向的对齐方式。
  • 也可以指定各个单元格之间的间隔 []30[][] 说明第一个和第二个单元格之间相隔 30。

第三个参数

指定纵向的单元格的各个属性。

  • grow 指定纵向是否进行延伸。
  • ::: 指定高度属性,与第二个参数意义一致。
  • top/bottom/center 指定在垂直方向的对齐方式。

添加组件

  1. panel.add(button,"");

"" 里面使用各个参数,经常使用的有以下参数:

  • growx 在水平方向延伸
  • growy 在垂直方向延伸
  • span 占用本行的所有单元格
  • span 2 占用横向的两个单元格
  • span 2 3 占用横向两个、纵向三个单元格
  • wrap 添加本组件后进行分行
  • gapleft/gapright/gaptop/gapbottom 指定四周的间隔
  • split 2 将该单元格分成两个单元格
  • h ::: 指定高度属性,如 h 10:20:30h 10!h ::20h :20:h 20:: 等。
  • w ::: 指定宽度属性

以下是例子

效果

MigLayout的使用总结 - 图1

代码

  1. this.setLayout(new MigLayout("insets 2","[grow][]","[grow][][][]"));
  2. this.add(new JScrollPane(historyArea),"growx,growy");
  3. this.add(rightPanel,"wrap,w 140!,span 1 4,growy");
  4. this.add(tb,"growx,wrap");
  5. this.add(new JScrollPane(inputArea),"growx,h 80!,wrap");
  6. this.add(closeButton,"split 2,h 24!,align right");
  7. this.add(sendButton,"h 80!,h 24!");