天天看点

AWT 布局管理器

FlowLayout(流控布局管理器):从左向右排列,右边空间不够自动换行,有点像响应式开发,窗口自适应.

Ø FlowLayout():使用默认对齐方式,默认垂直、水平间距.

Ø FlowLayout(int align):使用指定对齐方式,默认垂直、平平间距

Ø FlowLayout(int align,int hgap,init vgap):使用指定对齐方式、指定水平、垂直间距

Ø 静态常量:LEFT、 RIGHT、 CENTER 、LEADING、 TRAILING

Panel、Applet等默认使用FlowLayout布局管理器

BorderLayout:将容器分为:EAST 、SOUTH、WEST、NORTH、CENTER五个区域,

Ø 使用BorderLayout布局管理器添加组件时,需要指定添加哪个区域,如果没有指定,默认添加到center中

Ø 如果向同一个区域里面添加多个组件,后放入的组件会覆盖前面的组件。

Ø BorderLayout():使用默认垂直、水平间距

Ø BorderLayout(int hgap,int vgap):使用指定的水平、垂直间距

Ø 静态常量: EAST 、SOUTH、WEST、NORTH、CENTER

GridLayout布局管理器:将容器分割成网格,每个网格所占的区域大小相同。默认从左向右、从上到下依次添加到每个网格中.与FlowLayout不同的是,放在GridLayout布局管理器中的各个组件的大小由组件所处的区域来决定(每个组件自动涨大到占满整个区域)。

Ø GridLayout(int rows,int cols):指定行数、列数、默认纵向、横向间距

Ø GridLayout(int rows,int cols,int hgap,int vgap): 指定行数、列数、纵向、横向间距

GridBagLayout:管理器中一个组件可以跨越一个或多个网格,并可设置网络的大小互不相同,从而增加布局的灵活性,有点像表格中的合并单元格.为了处理GridBagLayout管理器中组件的大小、跨越性,Java提供了GridBagConstraints对象与特定的GUI组件关联

Ø 创建GridBagLayout布局管理器,并指定GUI容器使用该布局管理器

GridBagLayout gbc = <b>new</b> GridBagLayout();

container.setLayout(gbc);

Ø 创建GridBagConstraints对象,并设置该对象的相关属性

GridBagConstraints gbc = <b>new</b> GridBagConstraints();

       gbc.gridx=2;//设置受该对象控制的GUI组件位于网格的横向索引

       gbc.gridy=1;//设置受该对象控制的GUI组件位于网格的纵向索引

       gbc.gridwidth=2;//设置受该对象控制的GUI组件横向跨越多少网络

       gbc.gridheight=1;//设置受该对象控制的GUI组件纵向跨越多少网络

Ø 调用GridBagLayout对象的方法来建立GridBagConstraints对象与受控制组件之间的关联。

gb.setConstraints(c, gbc);//c是组件

Ø 添加组件,与采用普通布局管理器添加组件方法一样.

Ø 如果需要向容器中添加多个GUI组件,则需重复(2)、(3)、(4)步骤,由于GridBagConstraints对象可以多次重用,所以只需要创建一个GridBagConstraints对象即可,每次添加GUI组件之前先改变GridBagConstraints对象的属性即可。

CardLayout:它将加入容器的所有组件看成一叠卡片,每次只有最上面的那个Componet才可见。

Ø CardLayout():创建默认的CardLayout布局管理器

Ø CardLayout(int hgap,int vgap):指定卡片与容器左右边界的间距(hgap)、上下边界(vgap)的间距

Ø first(Container target):显示target容器中第一个卡片

Ø last(Container target):显示target容器中最后一个卡片

Ø previous(Container target):显示target容器中前一个卡片

Ø next(Container target):显示target容器中后一个卡片

Ø show(Container target,String name):显示target容器中后一个卡片

绝对定位:

Ø 将容器的布局管理器设置成null:setLayout(null);

Ø 往容器上添加组件时,先调用setBounds()或setSize()方法先设置组件大小、位置.或者直接创建GUI组件时通过构造参数指定该组件的大小、位置,然后将该有组件添加到容器中.

BoxLayout:是Swing引入的一个新的布局,他是用来替代GridBagLayout的,但是保留了GridBagLayout的很多优点,但是没那么复杂。BoxLayout可以在垂直和水平两个方向上摆方组件.

Ø BoxLayout(Container target,int axis):指定创建基于target容器的BoxLayout布局管理器,该布局管理器里组件按axis方向排列。其中axis有BoxLayout.X_AXIS(横向)和BoxLayout.Y_AXIS(纵向)两个方向

Box:是一个特殊的容器,它有点像Panel容器,但是该容器默认使用BoxLayout布局管理器,Box提供了两个静态方法来创建Box对象:

Ø createHorizontalBox():创建一个水平排列组件的Box容器

Ø createVerticalBox():创建一个垂直排列组件的Box容器

 BoxLayout没有提供设置间距的构造器和方法,BoxLayout使用Glue(橡胶)、strut(支架)和RigidArea的组件来控制组件间的距离.其中Glue代表可以在横向、纵向两个方向同时拉伸的空白组件(间距),Strut代表可以在横向、纵向任意一个方向上拉伸的空白组件(间距),RigidArea代表不可拉伸的空白组件(间距).

 Box提供了如下五个静态方法来创建Glue、Strut和RigidArea:

Ø createHorizontalGlue:创建一条水平Glue(可以两个方向同时拉伸的间距)

Ø createVerticalGlue:创建一条垂直Glue(可以两个方向同时拉伸的间距)

Ø createHorizontalStrut:创建一条水平Strut(可以水平方向同时拉伸的间距)

Ø createVerticalStrut:创建一条垂直Strut(可以垂直方向同时拉伸的间距)

Ø createRigidArea(Dimension d):创建指定宽度、高度的RigidArea(不可拉伸的间距)

继续阅读