第十一周总结

一、布局管理器所属类包
所属类包
布局管理器名称
说明
Java.awt
FlowLayout(流式布局)
组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列
BorderLayout(边界布局)
容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。
GridLayout(网格布局)
容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。
CardLayout(卡片布局)
如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况
GridBagLayout(网格包布局)
GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格
Java.swing
BoxLayout(箱式布局)
允许在容器中纵向或者横向防止多个控件
SprigLayout(弹簧布局)
根据一组约束条件放置控件

空布局
不使用布局管理器,按照控件自身提供的大小、位置信息放置控件

二、容器的默认布局管理器
各容器都有默认的布局管理,见下表:
容器
默认布局方式
顶层容器
JFrame
BorderLayout(边界布局)
JDialog
BorderLayout(边界布局)
JApplet
FlowLayout(流式布局)
中间容器
JPanel
FlowLayout(流式布局)

三、FlowLayout(流式布局)
使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。
1、流式布局特征如下:
l  组件按照设置的对齐方式进行排列
l  不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列)
2、流式布局FlowLayout类的常用构造函数和方法
构造函数

名称
用途
FlowLayout()    
构造一个新的 FlowLayout,它是默认居中对齐的,默认的水平和垂直间隙是5个像素
FlowLayout(int align)
构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个像素

五个参数值及含义如下:
0或FlowLayout.lEFT ,控件左对齐
1或FlowLayout.CENTER ,居中对齐
2或FlowLayout.RIGHT ,右对齐
3或FlowLayout.LEADING,控件与容器方向开始边对应
4或FlowLayout.TRAILING,控件与容器方向结束边对应
如果是0、1、2、3、4之外的整数,则为左对齐

FlowLayout(int align, int hgap, int vgap)

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。

3、FlowLayout 布局应用代码段举例

1)        设置FlowLayout 布局

JFrame  fr=new JFrame( );

FlowLayout  flow=new FlowLayout( );

fr.setLayout(flow);

上面的语句可以简化成:
fr.setLayout(new FlowLayout());

2)        设置框架fr为组件左对齐的FlowLayout布局 
fr.setLayout(newFlowLayout(FlowLayout.LEFT));
3)        设置框架fr为组件左对齐的FlowLayout布局,并且组件的水平间距为20像素,垂直间距为40像素。
fr.setLayout(new  FlowLayout(FlowLayout.LEFT,20,40));

GridLayout与GridBagLayout区别

构造函数:
GridLayout()
建立一个默认为一行一列的GridLayout。
GridLayout(int rows,int cols)
建立一个指定行(rows)和列(cols)的GridLayout。
GridLayout(int rows,int cols,int hgap,int vgap)
建立一个指定行(rows)和列(cols),且组件间水平间距为hgap、垂直间距为vgap的GridLayout。

构造函数:
GridBagLayout()
建立一个默认的GridBagLayout
每一个单元格都有各自的属性,而这些属性由GridBagConstrainsts类的成员变量来定义,且GridBagConstriaints中的所有成员变量都是public的。

package practice1;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class practice1{

public static void main(String[] args) {
JFrame frame=new JFrame("FlowLayout");
frame.setLayout(new FlowLayout (FlowLayout.CENTER,4,4));
JButton but=null;
for(int i=0;i<=9;i++)
{
but=new JButton("按钮 "+i);
frame.add(but);
}
frame.setSize(300,200);
frame.setVisible(true);
}

}

posted @ 2019-11-08 18:07  JCclub  阅读(143)  评论(0编辑  收藏  举报