2008年(3500)
分类:
2008-05-04 19:14:32
继 续介 绍 做 窗 户 的 巧 手 木 匠 一 族 。
类 FlowLayout 用 类 FlowLayout 生 成 的 外 观 管 理 器 是 AWT 为 类 Panel 所 设 计 的外 观 管 理 器 。 它 是 我 们 所 使 用 的 默 认 的 外 观 管 理 器 。 “ 默 认 的 外 观 管 理 器 ” 的 意 思 就 是 说 当 我 们 没 有 在程 序 之 中 使 用 其 他 的 外 观 管 理 器 ( 如 CardLayout 、 等 ) 的时 候 , Java 就 自 动 地 使 用 FlowLayout 外 观 管 理 器 进 行 一 系 列的 外 观 管 理 工 作 。 像 我 们 前 面 的 程 序 13.1 ( 白 手 起 家 程序 ) 就 是 使 用 的 FlowLayout 来 进 行 外 观 管 理 的 。
从 程序 13.1 我 们 应 该 已 经 看 出 来 了 , FlowLayout 外 观 管 理 器 所 做的 就 是 把 程 序 之 中 的 各 个 组 件 对 象 按 照 先 后 顺 序 依 次 排开 , 从 左 到 右 , 从 上 到 下 , 依 次 地 排 。
又 例如 :
程 序 14.3
import java.awt.*;
public class window5 extends java.applet.Applet
{
public void init( ) {
resize(150,60);
setLayout(new FlowLayout( )); // 使 用
FlowLayout 外 观 管 理 器
add("East",new Button("
东 边 "));
add("West",new Button("
西 边 "));
add("South",new Button("
南 边 "));
add("North",new Button("
北 边 "));
add("Center",new Button("
中 央 "));
}
}
程 序 14.3 的 运 行 结 果 如 图 14.4 所 示 :
图 14.4 程 序 14.3 的 执 行 结 果
实 际上 , 如 果 我 们 把 程 序 中 的 setLayout (new FlowLayout(
)); 这 条 语句 去 掉 , 程 序 的 执 行 结 果 也 是 一 样 的 , 没 有 任 何 区 别 。这 是
因 为 FlowLayout 外 观 管 理 器 是 默 认 的 外 观 管 理 器 的 缘故 。 有 兴 趣 的 人
可 以 自 己 试 一 试 。 如 果 我 们 改 变 语 句
resize(150,60);
为 :
resize(300,60);
则 程序 运 行 结 果 如 图 14.5 :
图 14.5 改 变 后 的 程 序 14.3 的 执 行 结 果
< 我 们从 以 上 的 程 序 运 行 结 果 可 以 进 一 步 看 出 , 当 窗 口 之 中 的组 件 不 能 排 满 一 排 的 时 候 , 组 件 是 按 照 向 中 间 对 齐 的 原则 来 排 列 的 。 向 中 间 对 齐 是 默 认 的 对 齐 规 则 。
对 齐方 式 是 可 以 改 变 的 :
我 们把 上 面 语 句 之 中 的 setLayout(new FlowLayout(
)); 改 为 :
setLayout(new FlowLayout(FlowLayout.LEFT));
程 序运 行 结 果 就 会 如 下 所 示 ( 图 14.6 ) :
图 14.6 进 一 步 改 变 后 的 程 序 14.3 的 执 行 结 果
那 么 , 使 用 了 语 句 setLayout(new FlowLayout(FlowLayout.RIGHT)); 以 后 , 窗 口 会 变 成 什 么 样 子 呢 ? 这 个 问 题 留 着 大 家 自 己编 个 程 序 试 一 试 吧 。 好 吗 ?
类 GridLayout
英 文里 面 Grid 有 “ 网 格 ” 的 意 思 , GridLayout 外 观 管 理 器 也 有 这方 面 的 意 义 。 GridLayout 外 观 管 理 器 会 把 窗 口 分 成 许 多 大小 相 等 的 均 匀 网 格 , 然 后 再 一 个 格 、 一 个 格 地 往 里 放 组件 。
既 然是 分 成 许 多 格 , 就 有 一 个 怎 么 分 的 问 题 , 到 底
分 成 多 少块 、 几 行 几 列 呢 ? 这 些 问 题 都 由 程 序 设 计 者 在 调 用 GridLayout
的 时 候 来 决 定 。 方 法 如 下 :
GridLayout ( 行 数 , 列 数 )
程 序 14.4
import java.awt.*;
public class window6 extends java.applet.Applet
{
public void init( ) {
resize(300,100);
setLayout(new GridLayout(2,3)); // 分
为 2 行 3 列
add("East",new Button("
东 边 "));
add("West",new Button("
西 边 "));
add("South",new Button("
南 边 "));
add("North",new Button("
北 边 "));
add("Center",new Button("
中 央 "));
}
}
运 行 结 果 如 图 14.7 :
图 14.7 程 序 14.4 的 执 行 结 果
如 果 所 设 置 的 网 格 数 目 比 组 件 数 目 少 , 会 怎 么 样 呢 ?比
如 上 面 的 程 序 , 如 果 设 置 为 2 行 2 列 , 程 序 的 执 行 结 果会 是 什 么 样 呢 ?
专 家 : 这 个 问 题 问 得 很 好 , 你 可 以 自 己 改写 一 下 上 面
的 程 序 , 看 一 看 运 行 结 果 是 什 么 样 的 。 多 学多 练 , 举 一 反 三 是 学 习 的 重
要 方 法 。
下载本文示例代码
第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)第七讲 窗口工具(二)