Shenzhen Ouxin Industrial Development Co.
马 晨
---- Javascript 刚 出 来 的 时 候, 许 多 人 都 以 为Javascript 和Java 差 不 多, 而 事 实 上 两 者 毫 无 二 致. 但 这 并 不 是 说 两 者 就 毫 无 联 系 了. 在Netscape Navigator 3.0 以 上 的 版 本 和IE 4.0 中, Javascript 却 可 以 和Java Applet 实 现 交 互.
---- 在Javascript 中 有 一 个 对 象 叫 做packages, 通 过 它 可 以 调 用Java API 中 的 方 法. 比 如
---- packages.java.lang.System.out.println("Hello,World!")
---- 用Netscape Navigator 3.0 以 上 的 版 本 来 看 含 有 该 语 句 的html 文 件, 你 会 在Netscape 的Java Console 中 看 到"Hello,World!" 的 输 出.
---- 可 能 你 会 觉 得 这 样 做 很 不 直 观, 因 为 不 能 在 浏 览 器 中 直 接 显 示, 还 要 另 外 打 开 一 个JavaConsole 窗 口, 似 乎 麻 烦 了 一 点. 但 是 这 个 例 子 最 简 单, 它 不 需 要 你 写 什 么java 程 序, 直 接 调 用java api 中 的 函 数 就 可 以 了.
---- 为 了 进 一 步 说 明javascript 是 如 何 在Netscape Navigator 中 控 制java applet 的, 让 我 们 看 看 以 下 的 例 子. 该 例 假 设 你 是 一 位java 程 序 员, 现 在 接 到 一 项 任 务. 该 任 务 要 求 你 设 计 一 个java applet, 这 个java applet 会 在 浏 览 器 中 画 一 个 圆, 然 后 你 要 提 供 一 个 按 钮 给 用 户, 使 得 用 户 只 要 用 鼠 标 点 一 下 按 钮, 这 个 圆 的 颜 色 就 会 改 变.
---- 凡 是 学 过java 编 程 的 人 都 知 道 这 个 程 序 可 以 全 部 用java 语 言 来 实 现. 但 是 我 要 说, 这 样 做 有 一 个 弊 端. 那 就 是 源 程 序 会 变 得 复 杂, 长 度 增 加. 因 为 画 圆 很 简 单, 一 个paint() 就 可 以 完 成 了. 但 是 加 上 了 按 钮, 就 要 加 上 有 关 事 件 处 理 的 方 法. 程 序 马 上 就 变 长 了. 如 果 用javascript 来 实 现, 则 情 况 就 简 单 多 了.java 程 序 中 只 需 要 提 供 一 个 控 制 颜 色 变 化 的 方 法 就 可 以 了. 对 于 按 钮 事 件 的 处 理 则 可 以 全 部 交 给 浏 览 器 自 己 去 解 决 了.
---- 以 下 是 该 例 的java 源 程 序, 以 及 与 之 配 合 的javascript.
import java.awt.Graphics;
import java.awt.Color;
public class simple_sample extends java.applet.Applet
{
Color line_color=Color.black;
String color_description="";
private int i=1;
public void start_2_change()
{
if (i%2==0)
{
line_color=Color.yellow;
color_description="The current color is Yellow!";
}
else
{
line_color=Color.green;
color_description="The current color is Green!";
}
i++;
repaint();
}
public void paint(Graphics g)
{
g.drawString(color_description,10,10);
g.setColor(line_color);
g.drawOval(30,20,79,79);
}
}
Javascript:
< form >
< input type="button" value="Alter Color"
onclick="document.simple_sample.start_2_change()" >
< /form >