该布局管理器功能强大,界面上组件会根据界面的缩放进行比例缩放.
其使用起来较为简单,主要操作函数如下:
new MutableGridLayout(int cols,int rows,int xgap,int xgap)
该构造函数用来创建一个cols列rows行的界面,其中竖列间隔为xgap,横行间隔为yGap
这样将整个界面作为x*y的矩阵方格.
getBox(int col,int row)
此函数用来说明你要操作的对象现在是(col+1,row+1)这个格子.****注意最左上面的格子
是(0,0)而不是(1,1)这与数组的表达相通.
split(int row,int col)或split(int row ,int col,int xGap,int yGap)
用来将所选的格子进行切分,其中split(int row,int col)是将操作对象(格子)切割成为cols列rows行
split(int row ,int col,int xGap,int yGap)是将操作对象(格子)切割成为cols列rows行,其中竖列间隔为xgap,横行间隔为yGap
当然操作是要有对象的所以一般格式为getBox(m,n).split(x,y)
merge(int startX,int startY,int endX,int endY)
用来把多个单元格进行合当然可以合并切割出来的小格子.
其含义为将(startX+1,startY+1)格子与(endX+1,endY+1)格子合并为一个格子
**小技巧:如果你所给的格子是处于对角线上的格子那么将会把周围的格子也合并进来.
例如:merge(0,0,1,1)则(0,0) (0,1) (1,0) (1,1)格子将被合为一个大格子.
setBlank(boolean)
用来指出你的哪个单元格不需要放入组件.
setWidth(int num,double value)或setHeight(int num,double value)
用来指出第num列或第num行的宽度或高度当你的value>1时那么认为你给的是绝对数值.value<1时
认为你给的是比例数值.
说明:如果你想得到分割以后的格子上的小格子可以重复使用getBox函数.
好了主要操作函数就这些(已经可以保证你的开发需求了)其它的功能您自己慢慢使用中就会明白了.
需要注意的是加入组件的顺序是按照你所分好的格子从上到下从左到右加入,所以一个界面您可能
有很多种划分方法来实现.可是你的加入组件的顺序估计就一种.所以组件的加入顺序请您勿必认真对待.
总之,这个布局管理器相当强大,如果您需要使用的话可以去作者blog索取当然,使用时不要忘了他人的版权声明!!!
例子程序代码和效果如下:
import javax.swing.JButton;
import javax.swing.JFrame;
import org.fswan.ui.MutableGridLayout;
/**
* @sampleauthor shaobotao(邵波涛)
* @author Swan Fong(方志文)
* MutableGridLayout布局的样例程序
*/
public class Test
{
public static void main(String[] args)
{
JFrame jf = new JFrame("Test Layout");
MutableGridLayout ml = new MutableGridLayout(4,4,5,5);
ml.getBox(1,1).split(2,1);
ml.getBox(3,3).split(1,4);
ml.getBox(1,2).getFill();
ml.merge(0,1,1,1);
ml.merge(2,0,2,1);
ml.getBox(3,0).setBlank(true);
ml.merge(1,2,2,3);
ml.getBox(0,2).split(2,5);
ml.getBox(0,3).split(3,1);
ml.getBox(0,2).merge(0,3,1,3);
ml.getBox(0,3).getBox(1,0).setBlank(true);
ml.getBox(0,2).getBox(0,2).setBlank(true);
jf.getContentPane().setLayout(ml);
for (int i = 0; i < 30; i++)
{
jf.getContentPane().add(new JButton("Button"+i));
}
jf.setSize(200,200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
如果还有不懂,请发贴或者直接给作者或者我发邮件我的EMail:shaobotao@163.com