Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1450714
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 19:14:26

一起学习

教 学 纲 要

设 置并 显 示 各 种 字 体 ; 产 生 和 设 置 画 笔 颜 色 ; 设 计 窗 口 输 出样 式 ; 制 作 彩 色 标 语 。

正 文

漂 亮 的 标 语

放 在 哪 里 好 呢 ?

      要 在 屏 幕 上 绘 图 或 写 字 , 怎 样 才 能把 它 们 放 在 制 定 的 位 置 呢 ? 可 想 而 知 , 在 绘 图 平 面 内 建立 一 个 平 面 直 角 坐 标 系 , 通 过 二 维 坐 标 就 可 以 把 绘 图 位置 表 达 清 楚 。

      几 乎 所 有 的 计 算 机 都 采 用 了 相 同 的坐 标 系 统 , 当 然 Java 也 不 例 外 。 坐 标 原 点 (0,0) 位 于 整 个平 面 的 左 上 角 , 向 右 为 x 轴 , 向 下 为 y 轴 。 所 有 的 坐 标 都必 须 是 正 整 数 , 一 个 单 位 代 表 一 个 象 素 。 坐 标 系 如 图 15.1 所 示 :

图 15.1 屏 幕 坐 标 示 意 图

      弄 清 楚 了 坐 标 , 就 可 以 随 心 所 欲 地把 文 字 和 图 形 放 在 屏 幕 上 了 。

是 宋 体 还 是 黑 体 ?

      在 小 应 用 程 序 中 输 出 文 字 信 息 是 一个 相 当 重 要 而 且 基 本 的 功 能 。 利 用 这 一 功 能 , 我 们 就 不必 拘 泥 于 HTML 文 件 格 式 的 规 定 , 以 自 己 想 要 的 方 式 输 出文 本 。 使 用 JAVA 提 供 的 Font 类 , 可 以 决 定 所 要 显 示 文 字 的字 体 、 大 小 和 位 置 , 使 输 出 的 文 字 更 富 于 变 化 、 更 具 特色 、 也 更 实 用 。 如 果 要 改 变 文 字 的 颜 色 , 就 要 用 到 Color 类 来 设 置 颜 色 , 加 了 颜 色 的 文 字 是 不 是 更 加 赏 心 悦 目 了呢 ?

      和 图 形 一 样 , 文 字 也 是 富 于 变 化 的。 使 用 什 么 样 的 字 体 能 使 输 出 更 加 漂 亮 ? 是 “ Times Roman ” 还 是 “ Courier ” ? 是 不 是 应 该 使 用 粗 体 或 者 斜 体 来 突出 它 的 重 要 性 呢 ? 不 论 做 了 怎 样 的 决 定 , 都 要 依 靠 Font 类 来 产 生 字 体 对 象 实 体 。 通 过 对 Font 对 象 进 行 控 制 就 可以 在 JAVA 里 写 出 优 美 漂 亮 的 字 来 。

      要 产 生 Font 对 象 很 简 单 , 就 和 说 明 可口 可 乐 是 饮 料 一 样 简 单 , 只 要 按 照 下 面 的 格 式 来 说 明 就可 以 了 :

      Font ( 字 型 名 , 字 体 样 式 , 字 体 大 小)

      字 型 名 : 顾 名 思 义 , 就 是 所 要 使 用的 字 型 的 名 字 , 正 如 上 面 提 到 的 , 是 宋 体 、 TimesRoman, 还是 Arial 、 或 者 Courier?

      字 体 样 式 : 指 的 是 字 的 外 观 。 是 黑体 ( BOLD ) 、 还 是 斜 体 ( ITALIC ) ? Font 类 型 中 已 经 事 先定 义 好 了 一 些 常 数 来 表 示 字 体 样 式 , 它 们 分 别 是 : BOLD 表 示 黑 体 、 ITALIC 表 示 斜 体 、 PLAIN 表 示 正 常 字 体 。

      字 体 大 小 : 指 的 是 每 个 字 或 者 字 母的 大 小 。

      讲 到 这 里 , 应 该 问 Font 对 象 到 底 是 怎么 产 生 的 呢 ? 我 们 来 看 一 个 例 句 就 清 楚 了 。
    Font fnA = new Font ( TimesRoman", FONT.PLAIN.20 ) ;
在 这 句 话 里 , fnA 就 是 我 们 自 己 定 义 的 一 种字 体 , 它 是 Font 类 的 一 个 对 象 , 或 者 说 是 Font 类 的 一 个 数据 变 量 , 这 个 变 量 名 是 fnA 。 道 理 和 “ int x ; ” 说 明 了 x 是 一 个 整 数 变 量 一 样 简 单 。 这 里 Font 和 int 一 样 是 一 种 数据 类 型 , 而 fnA 和 x 一 样 是 编 程 者 为 变 量 取 的 名 字 。
    new 又 是 什 么 呢 ? 就 是 新 建 一 个 对 象 的意 思 。
    Font ( TimesRoman", FONT.PLAIN.20 ) 就 应 该 比较 熟 悉 了 。 它 就 是 对 fnA 的 描 述 。 那 么 整 句 话 的 意 义 就 清楚 了 , 即 “ 新 建 一 个 名 为 fnA 的 字 体 对 象 , 这 个 新 定 义 的字 体 是 TimesRoman 的 正 常 体 , 大 小 为 20 号 。 ”

如 果想 使 字 体 是 斜 体 , 就 可 以 这 样 定 义
    Font fnB = new Font ( "Arial " , Font.ITALIC,18 ) ;

      那 么 , 想 让 它 既 是 粗 体 又 是 斜 体 又怎 么 定 义 呢 ? 照 下 面 这 样 定 义 就 可 以 了 :
    Font fnC = new Font ( "Courier " , Font.ITALIC Font.BOLD,40 ) ;
    尽 管 我 们 可 以 在 程 序 里 随 心 所 欲 地 指定 想 要 的 字 体 , 但 是 否 能 如 你 所 愿 , 得 到 正 确 的 字 体 呢? 这 就 得 看 执 行 程 序 的 系 统 是 否 支 持 你 所 定 义 的 那 些 字型 了 。 假 如 你 指 定 了 “ 楷 体 ” , 也 许 在 你 的 系 统 上 执 行没 有 问 题 , 而 在 别 人 的 机 器 上 没 有 安 装 这 种 字 型 , 他 看到 的 就 不 是 楷 体 , 而 是 “ 宋 体 ” 或 者 别 的 什 么 。 所 以 定义 字 体 的 时 候 最 好 用 常 见 的 字 型 。 例 如 : TimesRoman , Arial , Courier...

显 示 的 方 法

      定 义 了 字 体 , 怎 么 把 它 显 示 出 来 呢? 要 知 道 Applet 想 在 屏 幕 上 画 任 何 东 西 , 第 一 个 要 使 用 的就 是 Graphics 这 个 类 。 显 示 之 前 , 首 先 要 用 Graphics 中 的 setFont 设 置 已 经 定 义 过 、 并 准 备 显 示 的 字 体 , 然 后 再 调 用 显 示方 法 来 输 出 文 字 。 在 这 个 类 中 用 来 输 出 文 字 的 方 法 有 三个 : drawString 、 drawChars 、 drawBytes 。 1. drawString ( String str, int x, int y)
      str 是 一 个 字 符 串 ( String ) 类 型的 变 量 , 可 以 事 先 赋 值 。
      x 和 y 用 来 指 定 显 示 这 个 字 符 串 的位 置 。 注 意 , 这 里 所 提 的 位 置 是 指 字 的 基 线 位 置 , 而 不是 习 惯 的 矩 形 左 上 角 坐 标 。 这 里 先 来 看 一 个 例 句
    drawString ( "I am your first java applet . " , 25 , 50 ) ;
看 了 这 条 语 句 , 你 可 能 要 问 “ str 哪 里 去了 ? ” , 告 诉 你 一 个 诀 窍 , 调 用 drawString 时 , 你 可 以 直接 把 要 输 出 的 那 句 话 写 在 参 数 str 的 位 置 , 并 且 用 “ ” 号把 它 括 起 来 就 行 了 。 这 样 做 的 效 果 和 下 面 这 两 句 话 是 一样 的 。
    String str = " I am your first java applet .";
    g.drawString ( str , 25,50 );
既 然 能 用 一 条 语 句 实 现 , 为 什 么 还 要 用两 条 呢 ?

2. drawChars 用 来 输 出 给 定 字 符 数 组 或数 组 数 据 的 一 部 分 。 其 标 准 格 式 如 下 :
    drawChars ( char data[ ] , int offset ,int length, int x, int y ) 这 么 一 大 堆 参 数 , 都 是 什 么 意 思 ?
    data[ ] 是 指 要 显 示 的 字 符 型 数 组 。
    offset 和 length 分 别 指 从 数 组 的 第 几个 字 符 开 始 显 示 , 一 共 显 示 多 少 个 字 符 。
    x 和 y 的 作 用 和 drawString 的 一 样 , 用来 指 示 显 示 字 符 的 位 置 , 下 面 来 看 一 个 例 句
    char char1[ ] = {'H', 'e', 'l', 'l', 'o', ',', 'I', ' ', 'a', 'm', ' ', 'j', 'a', 'v', 'a','.'};
    g.drawChars = (char1,3,8,10,20);
这 两 条 语 句 将 以 ( 10,20 ) 为 基 线 开 始 输出 “ lo I am j"
    因 为 数 组 的 下 标 是 从 0 开 始 的 , 所以 在 上 面 的 字 符 数 组 里 , 第 0 个 元 素 是 “ H ” , 第 1 个 元素 是 “ e" , 第 8 个 元 素 是 “ a ” , 依 此 类 推 。 还 有 , 在 字符 数 组 里 , 空 格 也 算 一 个 字 符 。


下载本文示例代码


第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)第九讲 设定字体(一)

阅读(165) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~