服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java应用技巧


  1. applet 与 application 合 并
  
  --------------------------------------------------------------------------------
  
  
  ---- java 是 一 种 建 立 分 布 应 用 程 序 的 技 术 。 它 是 网 络 编
  程 的 最 优 秀 工 具 。 使 internet 的 应 用 从 通 讯 工 具 扩 展 到 能
  够 运 行 成 熟 应 用 程 序 的 网 络 。
  
  ---- java 程 序 有 两 种 类 型:applet 和 application 。 简 单 的 讲 ,
  applet 就 是 嵌 入web 文 档 的 程 序 , 而application 则 是 所 有 其 它
  类 型 的 程 序 。
  
  ---- 就java 而 言 ,applet 与 application 的 大 小 和 复 杂 性 都 没 有
  限 制 , 但 是 因 为applet 主 要 是 用 于 网 络 通 讯 , 由 于 通 讯
  速 度 有 限 , 下 载 时 间 较 长 , 因 而 applet 一 般 来 说 规 模 较
  小 , 而 对 于application 则 无 此 顾 虑 。
  
  ---- applet 与 application 之 间 的 技 术 差 别 来 源 于 其 运 行 环 境
  的 差 别 。 applet 需 要 来 自 浏 览 器 的 大 量 信 息: 浏 览 器 客
  户 机 的 位 置 和 大 小 、 嵌 入 主html 文 档 的 参 数 、 初 始 化 过
  程(init) 、 启 动 过 程(start) 、 停 止 过 程(stop) 、 终 止 过 程(de
  story) 、 绘 图 过 程(paint) 等 等 , 而application 则 相 对 要 简 单
  得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命 令 行 参 数 。
  
  
  ---- 对 于 applet 必 须 做 为java.applet.applet 的 子 类 , 而applicat
  ion 则 必 须 有 一 个 公 共 的 方 法 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("example");
  
  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() 方 法 和a
  ctionperformed( ) 方 法 来 响 应button 事 件 。 如 果 作 为application
  , 则 由main( ) 方 法 开 始 , 先 生 成 程 序 本 身 的 实 例 将 程 序
  加 入 窗 口 , 然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以
  在 提 示 下 作 为application 直 接 运 行 , 又 可 以 作 为applet 送 入
  任 何 浏 览 器 。
  
   
  
  2. java 中 的 发 声 提 示
  
  --------------------------------------------------------------------------------
  
   
  ---- java 作 为 一 种 网 络 编 程 语 言 , 在 浏 览 器 中 即 可 以 进
  行 动 画 演 示 , 也 可 以 播 放 声 音 。 在 人 机 的 交 互 过 程 中 ,
  为 了 加 强 效 果 或 起 到 提 示 的 作 用 , 需 要 加 入 声 音 。
  
  ---- java 的 包 java.applet 中 有audioclip 接 口 , 此 接 口 封 装 有
  关 声 音 片 断 的 一 些 常 用 方 法 。 用 法 如 下:
  
  
  audioclip audio;
  
  audio=getaudioclip(getcodebase(),"hi.au");
  
  audio.play();
  
  ---- 第 一 行 生 成 接 口audioclip 的 一 个 变 量 , 第 二 行 利 用 此
  变 量 取 得 声 音 文 件 hi.au , 此 文 件 与 程 序 本 身 在 同 一 目 录
  下,getcodebase() 方 法 是 用 来 取 得applet 的class 文 件 的url 地 址
  。 第 三 行 是 播 放 声 音 文 件 。 在applet 中 利 用 此 用 法 可 在
  浏 览 器 中 发 出 声 音 。 那 么 , 在application 中 是 否 也 可 以 用
  此 方 法 来 发 出 声 音 呢 ? 不 可 以 。 因 为 接 口audioclip 是 在
  包 java.applet 中 , 而 此 包 只 适 用 于applet 。 是 否 可 以 用 其 它
  方 法 来 实 现 呢 ? 我 们 可 以 利 用 1 中 的 技 巧 来 编 写 一 个 即
  是applet 又 是 application 的 程 序 试 试 。 结 果 , 还 是 不 行 。
  这 是 因 为play() 方 法 只 能 在applet 中 实 现 , 对 于applicationpla
  y() 方 法 是 不 能 够 被 调 用 的 。
  ---- 那 么 , 如 何 在application 中 实 现 发 声 提 示 呢 ?
  
  ---- 记 得 vb 中 有 beep 语 句 来 使 系 统 发 声 器(system speaker ) 发
  声 , 那 么 ,java 中 也 应 有 类 似 的 方 法 。
  
  ---- 在 java 的 java.awt.toolkit 类 中 有 方 法beep() 是 来 实 现 这 一
  功 能 的 。 类 toolkit 是 抽 象 类 , 它 是 实 现awt 的 所 有 工 具 的
  父 类 。 java 中 的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地
  , 抽 象 类 可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方
  法 来 取 得 此 类 的 替 代 品 。 在 toolkit 中 是 利 用 getdefaulttool
  kit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一 个 客 户
  机/ 服 务 器 的application 。 当 服 务 器 运 行 时 如 果 有 客 户 机
  与 服 务 器 相 连 , 则 服 务 器 会 自 动 发 声 警 报 提 示 服 务 器 端
  的 用 户 有 客 户 要 与 自 己 进 行 对 话 。
  
  ---- 程 序 如 下:
  
  
  服 务 器:
  
  import java.util.*;
  
  import java.io.*;
  
  import java.net.*;
  
  import java.awt.*;
  
  
  
  public class servert{
  
  public static void main(string[] args){
  
  server server;
  
  string clientrequest;
  
  boolean quit=false;
  
  server=new server(8001);
  
  while(!quit){
  
  datainputstream keyboard=new datainputstream(system.in);
  
  try{
  
  clientrequest=server.in.readline();
  
  if(clientrequest.trim().equals("close")){
  
  system.out.println("client says: "+clientrequest);
  
  system.exit(1);
  
  }
  
  system.out.println("client says: "+clientrequest);
  
  server.out.println(keyboard.readline());
  
  }catch(ioexception e){
  
  system.out.println("ioexception in server.in.readline()"+e);
  
  system.exit(1);
  
  }
  
  }
  
  }
  
  }
  
  class server{
  
  private serversocket server;
  
  private socket socket;
  
  public datainputstream in;
  
  public printstream out;
  
  public server(int port){
  
  try{
  
  server=new serversocket(port);
  
  system.out.println("/n
  
  *************************************************");
  
  system.

扫描关注微信公众号