java 布局管理器

来源:互联网 发布:java的todo 编辑:程序博客网 时间:2024/04/30 15:16

       为了实现跨平台性并获得动态的布局效果,java 在容器中设置了布局管理器负责对容器内的组件进行管理。布局管理器决定了容器内组件的布局、排列顺序、大小、位置等。  

       在这里简单总结一下java常用的几个布局管理器的特点和用法。

  • FlowLayout —— 流式布局管理器
  • BorderLayout —— 边界布局管理器
  • GridLayout —— 表格布局管理器
  • CardLayout —— 卡片布局管理器
  • GridBagLayout —— 网格包布局管理器
  • BoxLayout —— 箱式布局管理器

java布局管理器布局管理器特点方法及使用FlowLayout——流式布局管理器Panel 和 Applet 默认布局管理器,容器内组件从左到右、从上到下逐行摆放。默认居中。
  • FlowLayout()组件居中摆放
  • FlowLayout(int align)指定组件对齐方式
  • FlowLayout(int align, int hgap, int vgap)指定对齐方式、水平间距、垂直间距
例如:FlowLayout(FlowLayout.LEFT, 10,10)
BorderLayout——边界布局管理器Window、Dialog和Frame 默认布局管理器,将容器分为5个区:East、South、West、North、Center。add方法默认添加到Center。当容器窗口大小改变时,各组件相对位置不变,大小改变。
  • BorderLayout( ) 组件没有水平和垂直间距
  • BorderLayout(int hgap, int vgap)指定组件水平和垂直间距
  • 向容器中添加组件可以用add()方法                       
  1.  public Component add(String name, Component com)//name指定方向
  2. public void add(Component comp, Object constraints)//constraints指定方向
GridLayout——网格布局管理器将容器分为n行m列,每个网格单元可容纳一个组件,组件将充满该网格单元,组件从左到右,从上到下填充。
  • GridLayout()一行一列
  • GridLayout(int rows, int cols)//当rows、cols为0时任意行/任意列
  • GridLayout(int rows, int cols,int hgap,int vgap)//指定水平、垂直间隔
CardLayout——卡片布局管理器两个或更多组件(一般是panel)共享同一显示空间,组件像卡片一样叠放,一个时刻只有最上面的是可见的。
  • CardLayout()
  • CardLayout(int hgap,int vgap)指定间隔
  • public void first(Container  parent);//显示第一张卡片
  • public void next(Container  parent) //显示下一张,如果当前为最后一张则显示第一张
  • 还有previous(..)、last(..)方法,参数同上
  • public void show(Container parent, String name)显示指定名称组件
GridBagLayout——网格包布局管理器不需要组件尺寸一致,容许组件扩展到多行多列。每个组件占用一个或者多个单元,所占用的网格单元成为组件的显示区域。每个组件都有一个GridBagContraints类对象来指定组件的显示区域在网格中的位置,以及在显示区域中应该如何摆放组件。
  • gridx,gridy指定组件左上角在网格中的行和列
  • gridwidth,gridheight指定组件显示区域所占的列数和行数,以网格为单位而不是像素
  • fill 指定组件填充网格方式
  • ipadx,ipady 组件在最小尺寸还需要附加的像素数
  • insets 指定显示区域的外部填充
  • anchor 指定组件在显示区域中的摆放位置
  • weightx,weighty指定在容器大小改变时,增加、减少的空间如何在组件间分配。
BoxLayout——箱式布局管理器将组件垂直摆放在一列或者水平摆放在一行,由BoxLayout.X_AXIS和BoxLayout.Y_AXIS指定。 

如果不适用系统提供的布局管理器,即采用无布局管理器setLayout( null ),则需要使用setLocation()、setSize()、setBounds()等手工设置组件的大小和位置,这是设置绝对位置,当窗口大小改变时,无法重新改变组件的大小和位置,一般不推荐使用。

发现对布局管理器写的很详细的http://blog.csdn.net/zsy_gemini/article/details/4049078。