回到顶部
您的当前位置: 编程语言> JAVA> JAVA基础> 系列教程
Java进阶(八)容器、布局管理器和边框
2014-04-04 17:12:06
标签: 网络整理 Java 进阶 容器、布局管理器和边框

容器是用来存放盒组织组件的对象。布局管理器是用来在容器中摆放组件的特殊对象。容器和布局管理器在创建用户界面中起着至关重要的作用。

一:Swing容器的结构

像JButton之类的用户界面组件如果不放到容器中是不能显示的。容器是具有存放其他组件能力的组件。

所有容器的基类都是Java.awt.Container,它是Java.awt.Component的子类。Container类具有以下基本功能:

① 可以使用各种add或remove方法添加或删除组件。

② 拥有layout属性,用于指定在容器中放置组件的布局管理器。每个容器都有一个默认的布局管理器。

③ 提供java.awt.event.ContainerEvent事件的注册方法。

下面回顾三个最常用的Swing容器:JFrame、JApplet和JPanel。

1)JFrame

框架JFrame是Frame的Swing版本,是Java图形应用程序的顶层容器。与Frame相同,它是以具有标题栏和边框的独立窗口显示的。下面是JFrame中经常用到的属性:

① contentPane是框架的内容窗格。

② iconImage是表示框架的图像。

③ jMenuBar是框架的可选菜单栏。

④ resizable是一个布尔型值,指明框架是否是可变大小的。默认值为true。

⑤ title指明框架的标题。

2)JApplet

JApplet是Applet的Swing版本。因为它是Applet的子类,因此,它具有Web浏览器所要求的所有功能。下面是在Applet中定义的四个基本方法:

// Called by the browser when the Web page containing
// this applet is initially loaded
public void init()
// Called by the browser after the init() method and
// every time the Web page is visited
public void start()
// Called by the browser when the page containing this
// applet becomes inactive
public void stop()
// Called by the browser when the Web browser exits
public void destroy()

3)JPanel

面板起着子容器的作用,用于组织用户界面组件。

二:布局管理器

每个容器都有一个布局管理器来负责放置它的组件。特定类型的容器具有相应的默认布局管理器。

布局管理器根据自己的规则和属性设置来放置组件,组件的放置还受到组件自身性质的影响。每个布局管理器都有它自己特定的放置规则。

一些布局管理器具有影响容器中组件大小和位置的属性。

容器中组件的大小是由许多因素决定的,比如:

① 容器中使用的布局管理器的类型。

② 与每个组价相关的布局限制。

③ 容器的大小。

④ 所有组件共有的某些属性。

preferredSize属性指定组件看上去最合适的理想大小。

1)CardLayout

CardLayout布局管理器将组件像卡片一样放置在容器中。在CardLayout管理器中,可以指定一叠组件周围的水平间隔和垂直间隔的大小。

2)BoxLayout

javax.swing.BoxLayout是一个Swing布局管理器,它在一行或一列中放置组件。要创建BoxLayout对象,须使用下面的构造方法:

public BoxLayout(Container target, int axis)

该构造方法不同于其他布局管理器的构造方法。它是为指定的目标容器创建布局管理器。

3)使用null布局管理器

为了方便起见,Java也支持称为空布局的绝对布局,可以在固定位置上放置组件。在这种情况下,组件必须通过它的实例方法setBounds()来放置,如下所示:

public void setBounds(int x, int y, int width, int height);

三:创建自定义布局管理器

除了Java提供的布局管理器之外,还可以创建自己的布局管理器。LayoutManager接口提供下面几种在容器中放置组件的方法:

public void addLayoutComponent(String name,Component comp)

将给定名称的指定组件添加到容器中。

public void layoutContainer(Container parent)

把组件放置到指定的容器中。

public void removeLayoutComponent(Component comp)

从布局中删除指定的组件。

JScrollPane

对象的内容不能在视图区域中完全显示时,经常需要滚动它。可以使用JScrollBar和JSlider来达到这一目的,但是必须手工编写代码以实现滚动功能。JScrollPane是一个不用编码自动支持滚动的组件。

JTabbedPane

JTabbedPane是一个有用的Swing容器,它提供了一组相互排斥的选项卡来访问多个组件。

JSplitPane

JSplitPane是一个便利的Swing容器,它包含两个用称为分隔器的分隔栏分开的组件。

四:Swing边框

Swing提供了多种可以装饰组件的边框。

Swing边框定义在Border接口中。一共有八个具体的边框类:

1)BevelBorder是一个可凸、可凹的三维边框。

2)SoftBevelBorder用光滑的角提高或降低倾斜度。

3)EmptyBorder是一个有边框空间但没有边框线的边框。

4)EtchedBorder是一个蚀刻边框,此边框可以是槽也可以是棱。

5)LineBorder在边框周围绘制一条任意宽度的单色边框线。

6)MetteBorder是一个虚线边框,边框线的虚线是由图标够成的。

7)CompoundBorder用于把两个Border对象组合为一个边框。

8)TitleBorder是一个在指定位置显示字符串标题的边框。