📄 0059.htm
字号:
<html>
<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>第六章 Java图形用户接口</strong></big></p>
<div align="right">---(文/刘春阳)</div>
<p>对 一 个 优 秀 的 应 用 程 序 来 说, 良 好 的 图 形 用 户 接 口 是
必 不 可 少 的。 缺 少 良 好 的 图 形 用 户 接 口, 将 会 给 用 户 理 解
和 使 用 应 用 程 序 带 来 很 多 不 便。 很 难 想 象 用 户 为 了 学 会
使 用 一 个 应 用 程 序, 去 记 一 大 堆 命 令。 Java提 ?copy; 了 生 成
一 个 良 好 的 图 形 用 户 接 口 所 需 要 的 一 ?copy; 基 本 元 件: 面
板(Panel?copy;、 按 钮 (Button?copy;、 标 ?copy;(Label?copy;、 画
板(Canvases?copy;、 滚 动 条(Scrollbar?copy;、 列 表 框(List?copy;、
文 本 域(Text Field?copy;、 文 本 区(Text Area?copy;。 </p>
<h4 align=center>6.1 面 板 </h4>
<p>面 板 提 ?copy; 了 建 立 应 用 程 序 的 空 间。 你 可 以 把 图 形 元
件(包 括 其 他 面 板?copy; 放 在 一 个 面 板 上。 Applet类 提 ?copy;
了 一 个 基 本 的 面 板。 </p>
<h4 align=center>6.1.1 布 局 管 理 </h4>
<p>Java提 ?copy; 了 几 种 布 局: 顺 序 布 局(Flow Layout?copy;、 边
界 布 局(Border Layout?copy; 和 网 格 布 局 (Grid Layout?copy;。 </p>
<h4 align=center>6.1.1.1 顺 序 布 局 </h4>
<p>顺 序 布 局(Flow Layout?copy; 是 最 基 本 的 一 种 布 局, 面 板 的
缺 省 布 局 就 是 顺 序 布 局。 顺 序 布 局 指 的 是 把 图 形 元 件 一
个 接 一 个 地 ?reg; 平 地 放 在 面 板 上。 下 面 是 一 个 顺 序 布 局
的 例 子: </p>
<p>import java.awt.*; import java.applet.Applet; </p>
<p>public class myButtons extends Applet { Button button1, button2, button3;
public void init() { button1 = new Button("确 定"); button2 =
new Button("打 开"); button3 = new Button("关 闭");
add(button1); add(button2); add(button3); } } </p>
<p>该 程 序 生 成 的 布 局 如 下: </p>
<p>图 6.1 </p>
<h4 align=center>6.1.1.2 边 界 布 局 </h4>
<p>边 界 布 局 包 括 五 个 区: 北 区、 南 区、 东 区、 西 区 和 中 区。
这 几 个 区 在 面 板 上 的 分 布 规 律 是“ 上 北 下 南, 左 西 右 东”。
下 面 是 一 个 边 界 布 局 的 例 子: </p>
<p>import java.awt.*; import java.applet.Applet; </p>
<p>public class buttonDir extends Applet { </p>
<p>Button buttonN, buttonS, buttonW, buttonE, buttonC; </p>
<p>public void init() { setLayout(new BorderLayout()); buttonN = new Button("?reg;");
buttonS = new Button("火"); buttonE = new Button("木");
buttonW = new Button("金"); buttonC = new Button("土");
add("North", buttonN); add("South", buttonS); add("East",
buttonE); add("West", buttonW); add("Center", buttonC);
} } </p>
<p>下 面 是 该 程 序 运 行 的 结 果: </p>
<p>图 6.2 </p>
<h4 align=center>6.1.1.3 网 格 布 局</h4>
<p>网 格 布 局 把 面 板 分 成 一 个 个 的 网 格, 你 可 以 给 出 网 格
的 行 数 和 列 数。 下 面 是 一 个 网 格 布 局 的 例 子: </p>
<p>import java.awt.*; import java.applet.Applet; </p>
<p>public class buttonGrid extends Applet { Button button1, button2, button3,
button4, button5, button6, button7, button8; </p>
<p>public void init() { setLayout(new GridLayout(4,2)); button1 = new Button("乾");
button2 = new Button("坤"); button3 = new Button("艮");
button4 = new Button("震"); button5 = new Button("坎");
button6 = new Button("离"); button7 = new Button("巽");
button8 = new Button("兑"); add(button1); add(button2); add(button3);
add(button4); add(button5); add(button6); add(button7); add(button8); }
} </p>
<p>下 面 是 该 程 序 运 行 的 结 果: </p>
<p>图 6.3 </p>
<h4 align=center>6.2 按 钮 </h4>
<h4 align=center>6.2.1 按 钮 事 件</h4>
<p>用 户 点 一 下 按 钮, 就 会 有 一 个 按 钮 事 件 发 生。 你 可 以 通
过 覆 盖 一 个applet的action成 员 函 数 来 捕 捉 按 钮 事 件。 </p>
<p>public boolean action (Event e, Object o) { if (e.target instanceof
Button) { system.out.println ((string) o); } else { System.out.println
("Non-button event"); } return true; } </p>
<h4 align=center>6.2.2 按 钮 类 型 </h4>
<p>Java提 ?copy; 了 标 准 的 按 压 式 按 钮, 同 时 也 提 ?copy; 了 选
择 式 按 钮 和 标 记 式 按 钮。 </p>
<h4 align=center>6.2.2.1 选 择 式 按 钮 </h4>
<p>选 择 式 按 钮 提 ?copy; 了 从 几 个 选 项 中 选 一 个 选 项 的 功
能。 下 面 是 从 几 个 市 中 选 一 个 市 的 例 子, 市 名 放 在 选 择 式
按 钮 中: </p>
<p>CityChooser = new Choice(); </p>
<p>CityChooser.addItem("北 ?copy;"); CityChooser.addItem("上海");
CityChooser.addItem("天 津"); </p>
<p>add(CityChooser); </p>
<p>图 6.4 </p>
<h4 align=center>6.2.2.2 标 记 式 按 钮</h4>
<p>标 记 式 按 钮 的 状 态 作 为 标 记 框 事 件 的 对 象 参 数 返 回。
下 面 是 一 个 标 记 式 按 钮 的 例 子: </p>
<p>Checkbox fillStyleButton; fillStyleButton = new Checkbox("Solid");
</p>
<p>public boolean action(Event e, Object arg) { if (e.target instanceof
Checkbox) { System.out.println("Checkbox: " + arg); } return
true; } </p>
<p>图 6.5 </p>
<h4 align=center>6.2.2.3 按 键 式 按 钮</h4>
<p>按 键 式 按 钮 是 一 组 按 钮, 用 户 可 以 选 中 其 中 一 个, 同 时
这 一 组 中 的 其 他 按 钮 将 被 关 闭。 下 面 是 一 个 按 键 式 按 钮
的 例 子: public class CheckBox extends Applet { CheckboxGroup cbg; </p>
<p>public void init() { cbg = new CheckboxGroup(); add (new Checkbox("one
", cbg, true)); add (new Checkbox("two ", cbg,false)); add
(new Checkbox("three", cbg, false)); } } </p>
<p>图 6.6 </p>
<h4 align=center>6.2.3 自 包 含 按 钮 </h4>
<p>Java语 言 的 面 向 对 象 特 性 使 我 们 能 够 创 建 完 全 自 包 含 的
按 钮。 在 自 包 含 按 钮 里, 你 可 以 在 ?copy; 展 按 钮 类 里 建 立
事 件 控 制 函 数。 下 面 是 一 个 自 包 含 按 钮 的 例 子: </p>
<p>import java.awt.*; import java.applet.Applet; </p>
<p>class okButton extends Button { </p>
<p>public okButton() { setLabel("Ok"); } </p>
<p>public boolean action(Event e, Object arg) { System.out.println("OKButton");
return true; } } </p>
<p>public class buttontest extends Applet { okButton myOkButton; </p>
<p>public void init() { myOkButton = new okButton(); add(myOkButton); }
} </p>
<p>图 6.7 </p>
<h4 align=center>6.3 标 ?copy; </h4>
<p>标 ?copy; 是 一 种 放 到 面 板 上 的 静 止 的 正 文。 下 面 是 一 个
标 ?copy; 的 例 子: import java.awt.*; import java.applet.Applet; </p>
<p>public class label extends Applet { </p>
<p>public void init() { setLayout(new FlowLayout(FlowLayout.CENTER, 10,
10)); Label label1 = new Label("你 好!"); Label label2 = new
Label("另 一 个 标 ?copy;"); add(label1); add(label2); } } </p>
<p>下 面 是 运 行 结 果: </p>
<p>图 6.8 </p>
<h4 align=center>6.4 列 表 框 </h4>
<p>列 表 框 使 用 户 易 于 操 作 大 量 的 选 项。 创 建 列 表 框 的 方
法 和Choice button有 ?copy; 相 似。 列 表 框 的 所 有 条 目 都 是 可 见
的, 如 果 选 项 很 多, 超 出 了 列 表 框 可 见 区 的 范 围, 则 列 表
框 的 旁 边 将 会 有 一 个 滚 动 条。 首 先, 创 建 列 表 框: List l =
new List(4, false); 这 个 成 员 函 数 创 建 了 一 个 显 示4行 的 列 表
框。 第 二 个 参 数“false"表 示 这 个 列 表 框 是 单 选 的, 如 果
是“true ", 则 表 示 是 多 选 的。 下 面 增 加 列 表 框 的 选 项:
</p>
<p>l.addItem("北 ?copy; 大 学"); l.addItem("清 华 大 学");
l.addItem("吉 林 大 学"); l.addItem("复 ?copy; 大 学");
l.addItem("南 开 大 学"); l.addItem("天 津 大 学");
l.addItem("南 ?copy; 大 学"); add(l); </p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -