图形界面元素结构
图形界面
Component 组件,一个能以图形化方式显示出来,并可以与用户交互的对象
Container 容器,一种特殊的Component,可以盛装普通的Component
LayoutManager 布局,容器管理其他组件布局的方式
MenuComponent 菜单,图形界面的菜单组件
容器
Container
Window 可以独立存在的顶级窗口
Frame 常见窗口
Dialog
Panel 不能独立存在的容器
ScrollPane
Frame 对象
- 有标题
- 允许通过拖拉来改变窗口的位置、大小
- 初始化时不可见,可用 setVisible(true) 使其显示出来
- 默认使用 BorderLayout 作为其布局管理器
Panel 对象
- 不能独立存在、必须放在其他容器中的容器。
- 外在表现为一个矩形区域。
- 该区域可以盛装其他组件,为放置其他组件提供空间。
- 默认使用 FlowLayout 作为其布局管理器。
ScrollPane 对象
- 当组件占用空间过大时,自动产生滚动条。也可以设置参数默认具有滚动条。
- 不能独立存在、必须放在其他容器中的容器。
- 默认使用 BorderLayout 作为其布局管理器。通常不允许改变其布局管理器。
布局管理器
LayerManager 可以根据运行平台来调整组件的大小。
所有 AWT 容器都有默认的布局管理器,为容器指定布局管理器通过调用容器对象的 setLayout() 方法来完成。
AWT 提供了 FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout 5个常用的布局管理器。
FlowLayout
放置规律:从左到右、从上到下进行放置。
public FlowLayout() {
this(CENTER, 5, 5);
}
public FlowLayout(int align) {
this(align, 5, 5);
}
public FlowLayout(int align, int hgap, int vgap) {
this.hgap = hgap;
this.vgap = vgap;
setAlignment(align);
}
BorderLayout
BorderLayout 把界面分成 5 个区域:North、South、East、West 和 Center,每个区域只能放置一个组件。
public BorderLayout() {
this(0, 0);
}
public BorderLayout(int hgap, int vgap) {
this.hgap = hgap;
this.vgap = vgap;
}
常用方法
Component 类常用方法
// 设置组件的位置
public void setLocation(int x, int y) {
move(x, y);
}
public void setLocation(Point p) {
setLocation(p.x, p.y);
}
// 设置组件的大小
public void setSize(int width, int height) {
resize(width, height);
}
public void setSize(Dimension d) {
resize(d);
}
// 设置组件的位置、大小
public void setBounds(int x, int y, int width, int height) {
reshape(x, y, width, height);
}
public void setBounds(Rectangle r) {
setBounds(r.x, r.y, r.width, r.height);
}
// 设置组件的可见性
public void setVisible(boolean b)
Container 容器类常用方法
// 向容器中添加其他组件,并返回被添加的组件
// 该组件既可以是普通组件,也可以是容器
public Component add(Component comp){
addImpl(comp, null, -1);
return comp;
}
public void add(Component comp, Object constraints) {
addImpl(comp, constraints, -1);
}
// 设置此容器的布局管理器
public void setLayout(LayoutManager mgr) {
layoutMgr = mgr;
invalidateIfValid();
}
Window 容器的方法
// Window 容器提供的方法
// 将窗口调整到最佳大小
public void pack() {}
// 设置窗口相对于指定组件的位置,如果组件未显示或者为 null,则此窗口将置于屏幕的中央
public void setLocationRelativeTo(Component c) {}
Frame 窗口的方法
// 禁用或启用此 Frame 的装饰
public void setUndecorated(boolean undecorated) {}
AWTUtilities
// 创建自定义窗口形状
public static void setWindowShape(Window var0, Shape var1) {}