一、Frame的基本知识
Frame 是带有标题和边框的顶层窗口。它的继承关系如下:
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知子类:
JFrame
窗体的大小包括为边框指定的所有区域。边框区域的尺寸可以使用 getInsets 方法获得,但是,由于这些尺寸与平台相关,因此在通过调用 pack 或 show 将窗体设置为可显示之前,将无法获得有效的 insets 值。由于窗体的总大小包括了边框区,因此边框实际上遮掩了窗体的部分区域,并将可用于在矩形中呈现和/或显示子部件的区域限制在一个矩形内,该矩形左上角的位置为 (insets.left, insets.top),宽度为 width - (insets.left + insets.right),长度为 height - (insets.top + insets.bottom)。
窗体的默认布局为 BorderLayout。
使用 setUndecorated,窗体可以关闭本机装饰(即 Frame 和 Titlebar)。但只有在窗体不是 displayable 时才能这样做。
在多屏幕环境中,通过使用 Frame(GraphicsConfiguration) 或 Frame(String title, GraphicsConfiguration) 构造 Frame,可以在不同的屏幕设备上创建 Frame。GraphicsConfiguration 对象是目标屏幕设备的 GraphicsConfiguration 对象之一。
在虚拟设备多屏幕环境中(其中桌面区域可以跨越多物理屏幕设备),所有配置的边界都是相对于虚拟坐标系的。虚拟坐标系的原点位于主物理屏幕的左上角。是否使用负坐标取决于主物理屏幕在虚拟设备中的位置。
在此环境中调用 setLocation 时,必须传递一个虚拟坐标到此方法中。类似地,对 Frame 调用 getLocationOnScreen 将返回虚拟设备坐标。调用 GraphicsConfiguration 的 getBounds 方法可查找它在虚拟坐标系中的原点。
以下代码将 Frame 的位置设置为 (10, 10)(相对于相应 GraphicsConfiguration 的物理屏幕的原点)。如果不考虑 GraphicsConfiguration 的边界,则 Frame 的位置将被设置为 (10, 10)(相对于虚拟坐标系),并出现在主物理屏幕上,主物理屏幕不同于指定的 GraphicsConfiguration 的物理屏幕。
Frame f = new Frame(GraphicsConfiguration gc);
Rectangle bounds = gc.getBounds();
f.setLocation(10 + bounds.x, 10 + bounds.y);
窗体能够生成以下类型的 WindowEvent:
WINDOW_OPENED
WINDOW_CLOSING
在处理此事件时,如果程序没有显式地隐藏或释放窗口,则取消窗口关闭操作。
WINDOW_CLOSED
WINDOW_ICONIFIED
WINDOW_DEICONIFIED
WINDOW_ACTIVATED
WINDOW_DEACTIVATED
WINDOW_GAINED_FOCUS
WINDOW_LOST_FOCUS
WINDOW_STATE_CHANGED
二、Frame的常量字段值介绍
CROSSHAIR_CURSOR
已过时。由 Cursor.CROSSHAIR_CURSOR 取代。
DEFAULT_CURSOR
已过时。由 Cursor.DEFAULT_CURSOR 取代。
E_RESIZE_CURSOR
已过时。由 Cursor.E_RESIZE_CURSOR 取代。
HAND_CURSOR
已过时。由 Cursor.HAND_CURSOR 取代。
ICONIFIED
此状态位指示将窗体图标化。
MAXIMIZED_BOTH
此状态位掩码指示将窗体完全最大化(水平和垂直方向)。
MAXIMIZED_HORIZ
此状态位指示在水平方向将窗体最大化。
MAXIMIZED_VERT
此状态位指示在垂直方向将窗体最大化。
MOVE_CURSOR
已过时。由 Cursor.MOVE_CURSOR 取代。
N_RESIZE_CURSOR
已过时。由 Cursor.N_RESIZE_CURSOR 取代。
NE_RESIZE_CURSOR
已过时。 由 Cursor.NE_RESIZE_CURSOR 取代。
NORMAL
窗体处于正常状态。
NW_RESIZE_CURSOR
已过时。由 Cursor.NW_RESIZE_CURSOR 取代。
S_RESIZE_CURSOR
已过时。由 Cursor.S_RESIZE_CURSOR 取代。
SE_RESIZE_CURSOR
已过时。由 Cursor.SE_RESIZE_CURSOR 取代。
SW_RESIZE_CURSOR
已过时。由 Cursor.SW_RESIZE_CURSOR 取代。
TEXT_CURSOR
已过时。由 Cursor.TEXT_CURSOR 取代。
W_RESIZE_CURSOR
已过时。由 Cursor.W_RESIZE_CURSOR 取代。
WAIT_CURSOR
已过时。由 Cursor.WAIT_CURSOR 取代。
三、Frame的常量字段值定义
注意:CURSOR(光标)类型的常量字段值全部过时,由Cursor类常量字段值替代。
|
java.awt.Frame |
||
|
public static final int |
CROSSHAIR_CURSOR |
1 |
|
public static final int |
DEFAULT_CURSOR |
0 |
|
public static final int |
E_RESIZE_CURSOR |
11 |
|
public static final int |
HAND_CURSOR |
12 |
|
public static final int |
ICONIFIED |
1 |
|
public static final int |
MAXIMIZED_BOTH |
6 |
|
public static final int |
MAXIMIZED_HORIZ |
2 |
|
public static final int |
MAXIMIZED_VERT |
4 |
|
public static final int |
MOVE_CURSOR |
13 |
|
public static final int |
N_RESIZE_CURSOR |
8 |
|
public static final int |
NE_RESIZE_CURSOR |
7 |
|
public static final int |
NORMAL |
0 |
|
public static final int |
NW_RESIZE_CURSOR |
6 |
|
public static final int |
S_RESIZE_CURSOR |
9 |
|
public static final int |
SE_RESIZE_CURSOR |
5 |
|
public static final int |
SW_RESIZE_CURSOR |
4 |
|
public static final int |
TEXT_CURSOR |
2 |
|
public static final int |
W_RESIZE_CURSOR |
10 |
|
public static final int |
WAIT_CURSOR |
3 |
浙公网安备 33010602011771号