---------------------
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