background image

---------------------

Panel 类不能单独存在,只能存在于其他容器中(Window 或其子类),一个 Panel 对象代表了一个长方形的

区域,在这个区域中可以容纳其他的组件。

可以通过

Panel 类的默认构造方法来创建一个 Panel 对象,然后通过 Panel 的 add()方法向 Panel 中添加组

件。

如果要使

Panel 可见,必须通过 Frame 或 Window 的 add()方法把 Panel 添加到 Frame 或 Windows 中。

【例程】

SimplePanel 类的 main()方法创建了一个 Frame 对象,一个 Panel 对象和一个 Button 对象。Button

被加入到

Panel 中,Panel 又被加入到 Frame 中。

1

import

 java.awt.*;

2

public

 

class

 SimplePanel {

3

public

 

static

 

void

 main(String[] args){

4

Frame f = 

new

 Frame(

"hello"

);

5

Panel p = 

new

 Panel();

6

p.add(

new

 Button(

"press me"

));

7

p.setBackground(Color.

YELLOW

);

//设置 Panel 的背景着色

8

f.add(p);

//把 Panel 加入到 Frame 中

9

f.setSize(100, 100);

10

f.setBackground(Color.

BLUE

);

//设置 Frame 的背景色

11

f.setVisible(

true

);

12

}

13

}

【说明】以上代码将显示一个带黄色的

Panel 的 Frame。这个 Panel 充斥了整个 Frame 空间。Panel 中有一个

Button。

===========================================================
=====================================

布局管理器 决定组件在容器中的位置和尺寸。所有容器都会引用一个布局管理器的实例,通过它来自动进行

组件的布局管理。

当一个容器被创建后,它们有相应的默认布局管理器。

Window、Frame、Dialog 的默认布局管理器是

BorderLayout;Panel、Applet 的默认布局管理器是 FlowLayout。

通过

setLayout()方法可以重新设置容器的布局管理器。

如果不希望通过布局管理器来管理布局,可以调用容器的

setLayout(null)方法,这样布局管理器被取消了。

接下来必须调用容器中每个组件的

setLocation()、setSize()或 setBound()方法,为这些组件在容器中一一定位。

这种手工布局将导致图形界面的布局不再是和平台无关的。相反,图形界面的布局将依赖于操作系统环境。

【例程】

ManualLayout 类取消了布局管理器,然后按照手工布局把一个 Button 加入到 Frame 中。

1

import

 java.awt.*;

2

public

 

class

 ManualLayout {

3

public

 

static

 

void

 main(String[] args){

4

Frame f = 

new

 Frame(

"hello"

);

5

f.setLayout(

null

);

//取消布局管理器

6

f.setSize(300, 100);

//宽 300,高 100

7

Button b = 

new

 Button(

"press me"

);

8

b.setSize(100, 30);

//宽 100,高 30