边框布局
- 边框布局效果
麻将桌
- 搭建边框布局代码
先回顾前面讲的搭建一个空白窗体。设置位置有一个设置相对位置为居中的方法:f.setLocationRelativeTo(null);
参照麻将桌效果图来分析我们的思路:
① 创建5个按钮
② 为窗体设置边框布局:
frame.setLayout(new BorderLayout(20,50));
③ 将按钮组件添加到窗体上。 - 指定按钮组件的放置位置
直接添加按钮,是没有效果的:
f.add(_1b);
f.add(_2b);
需要指定放置位置,怎么指定?参照api例子:
f.add(_1b,BorderLayout.NORTH);
f.add(_2b,BorderLayout.SOUTH); - 设置组件长度或者宽度
拉动边框,发现上下组件的上下宽度没变,左右长度在变化;左右组件宽度没有变,上下高度发生变化,我们可不可以设置这些宽度和高度呢?可以的,首先想到大小size,试试:
尝试一下 通过setSize(x,y)设置组件的大小,有没有效果:
//b1.setSize(Dimension d )
b1.setSize(int width,int height) - setPreferredSize设置组件大小
b1.setPreferredSize(new Dimension(50,50)); //设置组件的大小 - 设置组件间距
f.setlayout(new BorderLayout(10,10)) //使用边框布局的构造函数设置组件间水平和垂直间距
网格布局和自定义组件大小
- 网格布局api效果查看
网格布局:它将容器中所有的组件组织为指定的行数和列数。分配给每个组件的显示区域都相同,因此如果指定3*3的网格,容器将被划分为9个大小相等的区域;
网格布局效果图(GridLayout),很接近我们的计算器布局。
- 创建一个可见窗体
搭建一个可见的Frame窗体 - 网格布局实现
1.需要添加6个按钮组件,采用条形的蔬菜标签:萝卜,苦瓜,茄子,黄瓜,冬瓜
2.设置gridlayout布局模式,先采用默认的空参构方。结构是并排显示
- 网格布局的构造函数
GridLayout() 创建具有默认值的网格布局,即每个组件占据一行一列。
GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。
GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。
自定义布局(手动布局):自定义组件坐标和大小
- 清除Frame默认布局
Frame的默认布局是什么? Borderlayout
Panel 的默认布局是什么? Flowlayout
消除默认布局: f.setLayout(null) - 自定义按钮组件坐标和大小
除了常用的布局模式之外,还可以手动设置每个组件的坐标和位置;
怎么手动设置?
通过setBounds(x,y,width,height)
X : 表示组件x的坐标
Y:表示组件y的坐标
Width:表示组件宽度
Height:表示组件高度