随笔 - 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 布局管理器(2)

  4. CardLayout
  CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面。牌布局管理器(CardLayout)就象一副叠得整整齐齐的扑克牌一样,有54张牌,但是你只能看见最上面的一张牌,每一张牌就相当于牌布局管理器中的每一层。
 例7

 1 import java.awt.*;
 2 import java.awt.event.*//事件处理机制,下一节的内容
 3 public class ThreePages implements MousListener {
 4  CardLayout layout=new CardLayout(); //实例化一个牌布局管理器对象
 5  Frame f=new Frame("CardLayout");
 6  Button page1Button;
 7  Label page2Label; //Label是标签,实际上是一行字符串
 8  TextArea page3Text; //多行多列的文本区域
 9  Button page3Top;
10  Button page3Bottom;
11  public static void main(String args[]) 
12  { 
13   new ThreePages().go(); 
14  }
15  public void go()
16  {   
17   System.out.println("123");
18   f.setLayout(layout); //设置为牌布局管理器layout
19   f.add(page1Button=new Button("Button page"),"page1Button"); /*第二个参数"page1Button"表示的是你对这层牌所取的名字*/
20   page1Button.addMouseListener(this); //注册监听器
21   f.add(page2Label=new Label("Label page"),"page2Label");
22   page2Label.addMouseLisener(this); //注册监听器
23   Panel panel=new Panel();
24   panel.setLayout(new BorderLayout());
25   panel.add(page3Text=new TextArea("Composite page"),"Center");
26   page3Text.addMouseListener(this); 
27   panel.add(page3Top=new Button("Top button") , "North");
28   page3Top.addMouseListener(this);
29   panel.add(page3Bottom=new Button("Bottom button") ,"South");
30   page3Bottom.addMouseListener(this);
31   f.add(panel,"panel");
32   f.setSize(200,200);
33   f.setVisible(true);
34  }
35 //……
36 }
37 
38 

 5.容器的嵌套
  在复杂的图形用户界面设计中,为了使布局更加易于管理,具有简洁的整体风格,一个包含了多个组件的容器本身也可以作为一个组件加到另一个容器中去,容器中再添加容器,这样就形成了容器的嵌套。下面是一个容器嵌套的例子。
例8

 1 import java.awt.*;
 2 public class ExGui3{
 3  private Frame f;
 4  private Panel p;
 5  private Button bw,bc;
 6  private Button bfile,bhelp;
 7  public static void main(String args[])
 8  {
 9   ExGui3 gui = new ExGui3();
10   gui.go(); 
11  }
12  public void go(){
13   f = new Frame("GUI example 3");
14   bw=new Button("West");
15   bc=new Button("Work space region");
16   f.add(bw,"West");
17   f.add(bc,"Center");
18   p = new Panel();
19   f.add(p,"North");
20   bfile= new Button("File");
21   bhelp= new Button("Help");
22   p.add(bfile);
23   p.add(bhelp);
24   f.pack();
25   f.setVisible(true);
26  }
27 }
28 

 小 结:
   1.Frame是一个顶级窗口。Frame的缺省布局管理器为BorderLayout。
   2.Panel 无法单独显示,必须添加到某个容器中。 Panel 的缺省布局管理器为FlowLayout。
   3.当把Panel 作为一个组件添加到某个容器中后,该Panel 仍然可以有自己的布局管理器。因此,可以利用Panel 使得BorderLayout 中某个区域显示多个组件,达到设计复杂用户界面的目的 。
   4.如果采用无布局管理器 setLayout(null),则必须使用setLocation(),setSize(),setBounds()等方法手工设置组件的大小和位置,此方法会导致平台相关,不鼓励使用。

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

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


网站导航: