MutableGridLayout是一个功能强大的JAVA界面网格布局。
基本的布局为n行m列,行间距和列间距为xGap,yGap,可以通造构造方法 new MutableGridLayout(int cols,int rows,int xgap,int xgap)来进行构造。
每行(列)的宽度(高度)可以通过setWidth(int num,double value)(setHeight(int num,double value))来进行每行(列)的宽度(高度)设定,如果值大于1则认为是绝对宽度,如果小于1则认为是比例,布局管理器会依此设置每行(列)的宽(高)度。
当一个基本布局完成后可以通getBox(int col,int row)来获取相应的格。
获取格后可以用split(int row,int col)或split(int row ,int col,int xGap,int yGap)来进行切分网格,也可以使用merge(int startX,int startY,int endX,int endY)把多个单元格进行合。
基本布局经过各种切分和合并后,只要把Container的Layout设成该布局,该布局会根据控件加进Container的顺序依从左到右,从上到下的顺序进行布局。
每格可以组件填充方式可以通过setFill来设置成扩充到全格或组件最佳尺寸两种方式。组件和网格之间的水平对齐方式有LEFT/CENTER/RIGHT,垂直对齐方式有TOP/MIDDLE/BOTTOM。并且格子可以设置成空setBlank(true),即组件不放到该格。
下文是一段调用的源代码,可以作为参考:
/*
* Created on 2004-10-27
*/
package com.fswan.memo;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.border.AbstractBorder;
import org.fswan.ui.MutableGridLayout;
/**
* @author Swan Fong(方志文)
*
* MutableGridLayout布局的样例程序
*/
public class TestLayout
{
public static void main(String[] args)
{
JFrame jf = new JFrame("Test Layout");
MutableGridLayout ml = new MutableGridLayout(3,4,5,5);
ml.getBox(1,1).split(2,3,10,10);
ml.getBox(2,2).setBlank(true);
ml.merge(0,2,1,3);
ml.getBox(0,2).split(3,3);
ml.getBox(0,2).getBox(0,0).split(2,2);
ml.setWidth(2,87);
ml.getBox(2,0).setFill(MutableGridLayout.PREFERRED);
ml.getBox(2,0).setAlign(MutableGridLayout.CENTER);
ml.getBox(2,0).setValign(MutableGridLayout.MIDDLE);
jf.getContentPane().setLayout(ml);
for (int i = 0; i < 30; i++)
{
jf.getContentPane().add(new JButton("Button"+i));
}
AbstractBorder d;
jf.setSize(640,480);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
以下是一个我和MutableGridLayout写的样式