Java应用技巧-Applet与Application合并

1/5/2008来源:Java教程人气:8811


  ---- java 是 一 种 建 立 分 布 应 用 程 序 的 技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯 工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序 的 网 络 。
  
  ---- Java 程 序 有 两 种 类 型:Applet 和 application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程 序 , 而Application 则 是 所 有 其 它 类 型 的 程 序 。
  
  ---- 就Java 而 言 ,Applet 与 Application 的 大 小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要 是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间 较 长 , 因 而 Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。
  
  ---- Applet 与 Application 之 间 的 技 术 差 别 来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏 览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、 嵌 入 主Html 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动 过 程(start) 、 停 止 过 程(stop) 、 终 止 过 程( destory) 、 绘 图 过 程(paint) 等 等 , 而Application 则 相 对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命 令 行 参 数 。
  
  ---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而 Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init( ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方 法main( ) 来 开 始 运 行 程 序 的 。 一 般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的 原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写 出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可 以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同 一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研 究Java 的 兴 趣 。
  
  ---- 例 程 如 下:
  
  import java.applet.*;
  import java.awt.*;
  import java.awt.event.*;
  
  public class Example extends Applet
  implements ActionListener{ // #1
  public static void main(String[] args){
  Frame win=new Frame(?xample");
  Example example=new Example();
  win.add(?enter", example);
  example.init(); // #2
  win.setSize(600,360);
  win.setVisible(true);
  }
  public void init(){ // #3
  Button button;
  Label label;
  button=new Button(" OK "):
  button.setBounds(280,200,100,20);
  button.addActionListener(this);
  label=new Label();
  label.setBounds(260,100,200,20);
  add(button);
  add(label);
  }
  public void actionPerformed(ActionEvent e){
  Object source=e.getSource();
  if(source==button){
  label.setText(" It is a example !");
  }
  }
  }
  
  ---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。
  
  ---- 如 果 把 该 程 序 看 作Applet , 它 只 是 覆 盖 了init() 方 法 和 actionPerformed( ) 方 法 来 响 应Button 事 件 。 如 果 作 为 Application , 则 由main( ) 方 法 开 始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 , 然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示 下 作 为Application 直 接 运 行 , 又 可 以 作 为Applet 送 入 任 何 浏 览 器 。