Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Java入门(10) 布局管理

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  本章目标:

  在第9章中,我们学习了许多用来构建GUI程序的部件,不过到现在为止,我们还无法让其“听话”的按照我们的意图摆放这些部件。在本章中,我们要学习如何进行部件的布局,也就是让部件能够“听话”地摆放在我们想放的位置上。我们将学会通过边框、网格、组合和GridBagLayout四种方式进行部件的布局管理。

  10.1 边框布局

  传授新知

  我们回顾一下在第9章中,我们在程序中总是使用以下两条语句定义了一个容器:


JPanel panel1=(JPanel)getContentPane();
panel1.setLayout(new FlowLayout());

  凭着我们现在所积累的阅读程序的功夫,应该能够很快地知道我们通过第一条语句创建了一个容器JPanel类的panel1。

  而接下来,我们则调用了panel1.setLayout(new FlowLayout()),在上一章中,我们一直没有对它进行相应的分析。现在该是揭开它的面纱的时候了。

  单词layout的中文意思是“布局”、“布置”,setLayout就是设置布局格式。也就是说,容器panel1的方法setLayout是用来设置布局格式的。那么,我们一直用的是什么模式呢?对,就是后面括号里的FlowLayout()。顾名思义,也就是流布局方式。这是一种顺其自然的方式:从左到右,一个个对象地摆放,摆不下,就摆到下一行。所以,我们就无法去控制它。

  从本章开始,我们就要学习一种控制布局的方法。在Java语言中,提供了各种布局管理器,以便大家能够达到这一目的。

  通常我们最常使用的布局管理器是:Border Layout(边框布局管理器),如下图所示,边框布局管理器将一个屏幕分成了五个部分:东、南、西、北、中。

10-1

  图10-1 边框布局管理示意图

  如果要使用这种边框布局管理进行布局控制,我们必须先将“容器”设置为“边框布局控制模式”,具体来说,就是当调用setLayout方法为容器设置布局控制模式时,参数设置为BorderLayout。例如:


JPanel panel1=(JPanel)getContentPane();
panel1.setLayout(new BorderLayout());

  然后,我们就可以在使用容器的add方法添加部件时,附加上位置参数,使得该部件显示在指定的位置上。位置参数分别是:

  BorderLayout.NORTH 位置为北

  BorderLayout.SOUTH 位置为南

  BorderLayout.EAST 位置为东

  BorderLayout.WEST 位置为西

  BorderLayout.NORTH 位置为中心

  实例说明

  下面,我们就来试一试,使用按钮排出五个方向!请创建一个testBorder.java,输入以下源程序:

  源程序:useTextArea.java


import java.awt.*;
import javax.swing.*;
import java.applet.Applet;
public class testBorder extends JApplet
{
public void init()
{ 
JPanel panel1=(JPanel)getContentPane();
panel1.setLayout(new BorderLayout());
JButton north=new JButton("North");
JButton south=new JButton("South");
JButton east=new JButton("East");
JButton west=new JButton("West");
JButton center=new JButton("Center");
panel1.add(north,BorderLayout.NORTH);
panel1.add(south,BorderLayout.SOUTH);
panel1.add(east,BorderLayout.EAST);
panel1.add(west,BorderLayout.WEST);
panel1.add(center,BorderLayout.CENTER);
}
}

  然后,我们使用javac编译这个程序,然后编辑一个显示这个Java Applet的HTML页面。最后调用appletviewer来观察这个页面,如下图所示:

10-2

  图10-2 程序testBorder.java的输出(1)

10-3

  图10-3 程序testBorder.java的输入(2)

  为了试一下,如果并没有在每个位置都安排一个部件,那么会怎么样呢?我们修改一下程序,将panel1.add(west,BorderLayout.WEST);这一行注释掉(就是在前面加上“//”号),也就是不显示西边的按钮,看一下结果如何。正如上图(图10-3)所示,西边由于没有部件,因此“中”就朝西靠,“占领”了它的位置。

  而同样的,如果没有了南边北边,正如下图(10-4)所示,其它部件就会占领其位置:

10-4

  图10-4 程序testBorder.java的输出(3)

10-5

  图10-5 程序testBorder.java的输入(4)

  而如果我们修改一下程序,让中间的按钮不显示的话,就会出现如图10-5的样子,中间的区域并未并占领,而是空在那里了!这是与其它位置不同的地方,大家一定要记住。

  一些提示:

  其实这很好理解,如果中间的那一块的位置被其它位置上的部件占领的话,就会使得分不清“东”、“南”、“西”、“北”了。倒成了“左上角”、“左下角”、“右上角”、“右下角”了。

  自测练习

  1) 使用____________位置参数,能够使一个部件位于容器的顶部。

  a. Layout.TOP b. BorderLayout.TOP

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Php4中文手册   下一篇:Java入门(11) 让程序更动人

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号