随笔 - 71  文章 - 15  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

因为口渴,上帝创造了水;
因为黑暗,上帝创造了火;
因为我需要朋友,所以上帝让你来到我身边
Click for Shaanxi xi'an, Shaanxi Forecast
╱◥█◣
  |田|田|
╬╬╬╬╬╬╬╬╬╬╬
If only I have such a house!
〖总在爬山 所以艰辛〗
Email:myesjoy@yahoo.com.cn
NickName:yesjoy
MSN:myesjoy@hotmail.com
QQ:150230516

〖总在寻梦 所以苦痛〗

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

Hibernate在线

Java友情

Java认证

linux经典

OA系统

Spring在线

Structs在线

专家专栏

企业信息化

大型设备共享系统

工作流

工作流产品

网上购书

搜索

  •  

最新评论

阅读排行榜

评论排行榜

1.4 LayoutManager 布局管理器(1)

  java为了实现跨平台的特性并且获得动态的布局效果,java将容器内的所有组件安排给一个"布局管理器"负责管理,如:排列顺序,组件的大小、位置,当窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理器来管理,不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来决定布局。

  布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout
例3

 1 import java.awt.*;
 2 public class ExGui{
 3  private Frame f;
 4  private Button b1;
 5  private Button b2;
 6  public static void main(String args[]){
 7   ExGui that = new ExGui();
 8   that.go();
 9  }
10  public void go(){
11   f = new Frame("GUI example");
12   f.setLayout(new FlowLayout());//设置布局管理器为FlowLayout
13   b1 = new Button("Press Me");//按钮上显示字符"Press Me"
14   b2 = new Button("Don't Press Me");
15   f.add(b1);
16   f.add(b2);
17   f.pack();//紧凑排列,其作用相当于setSize(),即让窗口尽量小,小到刚刚能够包容住b1、b2两个按钮
18   f.setVisible(true);
19  }
20 }
21 

运行结果如下:

 1. FlowLayout
  FlowLayout 是Panel,Applet的缺省布局管理器。其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。
  构造方法主要下面几种:
  FlowLayout(FlowLayout.RIGHT,20,40);
  /*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/
  FlowLayout(FlowLayout.LEFT);
  //居左对齐,横向间隔和纵向间隔都是缺省值5个象素

  FlowLayout();
  //缺省的对齐方式居中对齐,横向间隔和纵向间隔都是缺省值5个象素
例4

 1 import java.awt.*;
 2 public class myButtons{ 
 3  public static void main(String args[])
 4  {
 5   Frame f = new Frame(); 
 6   f.setLayout(new FlowLayout());
 7   Button button1 = new Button("Ok");
 8   Button button2 = new Button("Open");
 9   Button button3 = new Button("Close");
10   f.add(button1);
11   f.add(button2);
12   f.add(button3);
13   f.setSize(300,100); 
14   f.setVisible(true);
15  }
16 }

运行结果如下:

当容器的大小发生变化时,用FlowLayout管理的组件会发生变化,其变化规律是:组件的大小不变,但是相对位置会发生变化。例如上图中有三个按钮都处于同一行,但是如果把该窗口变窄,窄到刚好能够放下一个按钮,则第二个按钮将折到第二行,第三个按钮将折到第三行。按钮"Open"本来在按钮"OK"的右边,但是现在跑到了下面,所以说"组件的大小不变,但是相对位置会发生变化"。

 2. BorderLayout
  BorderLayout 是Window,Frame和Dialog的缺省布局管理器。BorderLayout布局管理器把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件。各个区域的位置及大小如下图所示:

    
例5

 1 import java.awt.*;
 2 public class buttonDir{
 3  public static void main(String args[]){
 4   Frame f = new Frame("BorderLayout");
 5   f.setLayout(new BorderLayout());
 6   f.add("North"new Button("North"));//第一个参数表示把按钮添加到容器的North区域
 7   f.add("South"new Button("South"));//第一个参数表示把按钮添加到容器的South区域
 8   f.add("East"new Button("East"));//第一个参数表示把按钮添加到容器的East区域
 9   f.add("West"new Button("West"));//第一个参数表示把按钮添加到容器的West区域
10   f.add("Center"new Button("Center"));//第一个参数表示把按钮添加到容器的Center区域
11   f.setSize(200,200);
12   f.setVisible(true); 
13  }
14 }

运行结果如下:

在使用BorderLayout的时候,如果容器的大小发生变化,其变化规律为:组件的相对位置不变,大小发生变化。例如容器变高了,则North、South区域不变,West、Center、East区域变高;如果容器变宽了,West、East区域不变,North、Center、South区域变宽。不一定所有的区域都有组件,如果四周的区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果Center区域没有组件,则保持空白,其效果如下几幅图所示:

  
       North区域缺少组        
  
      North和Center区域缺少组件

3. GridLayout
  使容器中各个组件呈网格状布局,平均占据容器的空间。

 1 import java.awt.*;
 2 public class buttonGrid {
 3  public static void main(String args[]){
 4   Frame f = new Frame("GridLayout");
 5   f.setLayout(new GridLayout(3,2));//容器平均分成3行2列共6格
 6   f.add(new Button("1")); //添加到第一行的第一格
 7   f.add(new Button("2")); //添加到第一行的下一格
 8   f.add(new Button("3")); //添加到第二行的第一格
 9   f.add(new Button("4")); //添加到第二行的下一格
10   f.add(new Button("5")); //添加到第三行的第一格
11   f.add(new Button("6")); //添加到第三行的下一格
12   f.setSize(200,200);
13   f.setVisible(true);
14  }
15 }

运行结果如下:

posted on 2006-01-21 22:23 ★yesjoy★ 阅读(1022) 评论(0)  编辑  收藏 所属分类: java.awt包

只有注册用户登录后才能发表评论。


网站导航: