2008年(3500)
分类:
2008-05-04 19:14:28
教 学 纲 要
设 置并 显 示 各 种 字 体 ; 产 生 和 设 置 画 笔 颜 色 ; 设 计 窗 口 输 出样 式 ; 制 作 彩 色 标 语 。
3. drawBytes 弄 清 楚 上 面 两 个 方 法 , 这 就 简 单 多 了 。
它 用 来 输 出 byte 数 组 中 的 数 值 所 对 应 的 字 符 。 标 准 格 式 如 下 所 示 :
drawBytes ( byte data[ ], int offset, int length,
int x, int y);
可 见 , 它 和 drawChars 很 相 似 , 只 不 过 byte 数
组 中 的 元 素 代 表 的 是 字 符 的 ASCII 码 。 比 如 “ A ” 的 ASCII 码 是 65 , B 的
是 66... 其 他 参 数 的 意 义 和 drawChars 中 的一 样 , offset 指 定 输 出 的 起 始
字 符 , length 说 明 输 出 字 符串 的 长 度 , x 和 y 表 示 显 示 的 位 置 。 还 是 举 个
例 子 吧 。
byte byte1[ ] = {65,66,67,68,70,71,72,73,74,75}
g.drawBytes( byte1,2,7,10,40);
这 两 条 语 句 将 在 ( 10 , 40 ) 处 显 示 “ CDEFGHI ” 。
百 闻 不 如 一 见 , 现 在 让 我 们 用 一 个程 序 来 看 个 究
竟 吧 。
程 序 15.1
// ShowText.java
import java.awt.Graphics;
import java.awt.Font;
public class ShowText extends java.applet.Applet
{
Font fn = new Font("TimesRoman",Font.BOLD,12);
// 产 生 一 个 名 为 fn 的 字 体
String str = "This is drawString test.";
// 给 字 符 串 赋 值
char ch[] = {'T','h','i','s',' ', 'i','s','
','a',' ','t','e','s','t','.'}; // 给 字 符 数 组 赋 值
byte by[] = {65,66,67,68,69,70,71,72,73,74};
// 给 byte 数 组 赋 值
public void paint(Graphics g)
{ g.setFont(fn); // 设 置 当 前 字 体 为 fn
g.drawString(str,10,50); // 在 ( 10 ,
50 ) 处 显 示 字 符 串 str
g.drawChars(ch,0,15,10,70); // 在 (10,70)
处 显 示 字 符 数 组 ch 的 第 0 个 到 第 15 个 字 符
g.drawChars(ch,3,6,30,90); // 显 示 ch 的
第 3 个 到 第 6 个 字 符
g.drawBytes(by,0,10,50,140);
g.drawBytes(by,2,5,200,100); // 显 示 by
数 组 的 第 2 到 第 5 个 字 符
}
}
程 序 15.1 的 HTML 文 件 如 下 所 示
执 行 结 果 如 图 15.2 所 示 。
上 面 的 程 序 都 看 懂 了 吗 ? 这 里 我 们用 到 了 两 个 程
序 包 : java.awt.Graphics 和 java.awt.Font , 因 为程 序 中 用 到 的 方 法 drawString
、 drawChars 和 drawBytes 都 在 Graphics 程 序 包 里 , Font 类 是 属 于 Font
这 个 程 序 包 的 。
Font fn = new Font ("Courier", Font.BOLD,
20 ) ; 就 是 前 面 讲 过 的 , 产 生 一 个 新 的 字 体 名 叫 fn , 它 是 20 号 的 Courier
粗 体 。
g.setFont ( fn ) ; 当 然 就 是 把 当 前 的 字 体设 置 为
刚 才 定 义 过 的 fn , 然 后 用 g.drawString 、 g.drawChars 和 g.drawBytes
来 输 出 字 符 , 对 照 运 行 结 果 , 很 容 易 理 解 每 一条 语 句 的 意 思 。 尽 管 有 多 种 方
法 可 以 显 示 字 符 , 不 过 大部 分 情 形 下 , 使 用 drawString 就 足 够 了 。
图 15.2 在 窗 口 的 任 意 位 置 显 示 字 符
彩 色 的 字
想 像 一 下 , 如 果 自 己 的 主 页 里 都 是白 纸 黑 字 , 是 不 是 觉 得 少 了 点 什 么 呢 ? 那 就 给 它 加 点 颜色 瞧 瞧 , 还 有 什 么 能 比 五 彩 缤 纷 的 主 页 更 能 吸 引 人 呢 ?
要 写 出 彩 色 的 字 , 首 先 要 设 置 写 的 字和 画 的 图 的 颜 色 , 就 像 画 家 要 作 画 , 先 要 调 颜 料 一 样 。产 生 颜 色 的 方 法 和 产 生 字 体 很 相 像 , 不 过 这 次 我 们 用 的是 Color 类 , 而 不 是 Font 类 了 。 先 调 用 Color 类 的 构 造 函 数, 产 生 一 个 Color 对 象 , 再 用 Graphics 类 里 的 SetColor 把 它 设置 到 Graphics 对 象 上 。 也 就 是 调 好 颜 色 , 然 后 放 到 画 笔 上。
要 说 明 Color 对 象 很 简 单 , 我 们 知 道任 何 一 种 颜
色 都 可 以 由 红 、 绿 、 蓝 三 原 色 合 成 。 JAVA 里制 造 新 的 颜 色 也 只 需 给 定 三 原
色 的 数 值 就 可 以 了 。 其 说明 格 式 如 下 :
Color ( int red , int green , int blue ) ;
红 、 绿 、 蓝 三 原 色 的 数 值 必 须 界 于 0 到 255 之 间 , 而 且 三 个 数 值 表 示 的 顺 序 必 须 是 红 、 绿 、 蓝 。
例 如 : Color r1 = new Color (255, 0, 0) ; 这 条 语 句就 产 生 了 一 个 名 为 r1 的 红 颜 色 。
看 看 这 句 话 产 生 了 一 种 什 么 样 的 颜色 呢 ? 我 也 不
知 道 。
Color my_color = new Color ( 10,200,10);
此 外 , 你 还 可 调 节 颜 色 的 明 暗 , 只需 使 用 Color 类 提 供 的 函 数 brighter( ) 和 darker( ) 就 可 以 得 到比 指 定 颜 色 亮 一 些 或 者 暗 一 些 的 颜 色 。
好 了 , 现 在 可 以 随 心 所 欲 地 定 义 各种 各 样 的 颜 色 了 。 不 过 , 如 果 你 想 要 的 颜 色 不 是 太 离 奇的 话 , 可 以 直 接 使 用 Color 类 中 已 经 定 义 好 的 各 种 颜 色 常数 , 而 不 用 自 己 费 心 去 调 色 了 。 例 如 : g.getColor( Color.pint); 这 句 话 把 当 前 画 图 和 写 字 的 颜 色 置 为 粉 色 。
系 统 定 义 好 的 参 数 有 :
表 15.1 系 统 定 义 的 颜 色
black | 黑 色 | blue | 蓝 色 |
Cyan | 青 色 | Gray | 灰 色 |
Green | 绿 色 | LightGray | 浅 灰 色 |
Magenta | 紫 色 | Orange | 橙 色 |
Pink | 粉 色 | Red | 红 色 |
White | 白 色 | Yellow | 黄 色 |