QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4532|回复: 3
打印 上一主题 下一主题

[转帖]Java应用技巧

[复制链接]
字体大小: 正常 放大
god        

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |正序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  # M9 V% ~" ?  D' ~) p
+ X; K% }& a5 K2 x1 o& p/ y
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
) O$ O1 |) y4 i7 a- }4 b/ D( ^" x
/ k( t1 ~7 @$ d; U) p% a---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  + C7 I7 ~/ o9 t5 b5 H6 H* _
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
6 t- T' z# g; }1 T" A4 h6 x+ @$ c" T$ @$ c4 {6 w
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
* T) I' c4 C' t6 i# g; c; o
8 _" t* ~" \, a/ H6 J0 X# V---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  " r6 w/ ?' A* S- c' ]

, i0 V. i; S- J; T3 n+ V  Q8 n---- 例 程 如 下:  : n- h9 T6 N4 W) M
) X& M  y0 b, }9 a1 u2 _% C6 P4 S
      import java.applet.*;  
3 }5 G- x3 s* I) c. f: r+ V      import java.awt.*;  ! t( }  T+ ^1 |# e. T
      import java.awt.event.*;  6 p% v; [" S1 _) h7 m
   ' \2 |+ u4 [6 s# f
6 _- T$ o+ D- Q+ @: y
      public class Example extends Applet implements  ( h' T- \: S% V6 t
                       ActionListener{ //          public static void main(String[] args){  7 }9 \3 k+ F# @2 x- F: b# k/ U
           Frame win=new Frame("Example");  4 h" @2 k3 r6 h; W+ A9 M
           Example example=new Example();  
$ n% Y; r8 n. b" H5 b5 ~# J           win.add("enter", example);  
- n( O( Q2 f9 U) \1 l* E7 `           example.init();             //            win.setSize(600,360);  
  f3 G- y; H, J% a8 O) V7 d  Y           win.setVisible(true);  8 {( r/ M: l! v/ O9 z
         }  
9 _( ^$ A$ ?: [! g      public void init(){                        //            Button button;  . M, ^9 Q9 q7 k# N/ h
           Label  label;  2 v! ~% [' ^+ ?# h3 H
           button=new Button(" OK "):  - H# c& b! m* h( X( L0 N# L  x' v
           button.setBounds(280,200,100,20);  2 ?9 R, R; |2 b' e( n' g' M& u- x# N
           button.addActionListener(this);  ! s+ m% _2 g" H) j7 M; {2 B9 z
           label=new Label();  
- T0 }7 ~# U. z* {$ I+ v           label.setBounds(260,100,200,20);  
& r/ R$ L- t, o# y& x8 a           add(button);  
8 K" E; r5 o2 G6 b& R  G           add(label);  
- E0 O/ q' g2 M+ M1 y2 v/ A         }  / C! Q$ E3 G+ D) f6 F
       public void actionPerformed(ActionEvent e){  & Y0 d/ h1 d  D: z( H; g
           Object source=e.getSource();  
' k$ p+ Q' l0 V0 R4 Y  y           if(source==button){  * g* N1 E$ Y/ g2 l5 T2 G& ~
             label.setText(" It is a example !");    O; ]$ R/ q- O# n
           }  
& f+ v  X6 ^1 d$ J4 p' |/ _/ C         }  0 C, I$ u& }3 ^3 K8 S# J
      }  
3 A' [& \! O" ]: K2 `+ w# a" ^2 }; M$ L
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
7 m$ \: s( |9 X; k3 c1 [8 r2 d* m! Y4 v3 K* l, P" w
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
: A0 q7 g# o' |, u- ]  e0 L# U  Y3 d/ s' O+ ~; D
---- 2. Java 中 的 发 声 提 示  
  w: g1 C, S* [
) L) f4 ]* l# P' Z---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
" _% [# w$ E1 C# {
; z3 _0 ~9 @9 ]. k; Q---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  ! {' {% S7 L, U9 [, H* K9 j7 S' Z
# z" V- h$ ^+ d& K, N' n5 B& r
       AudioClip audio;  
  E1 T) i4 j) X( ^( D; E' l         audio=getAudioClip(getCodeBase(),"Hi.au");  
3 Z' ?! L( V  C, C+ e6 ^) ^- F9 [         audio.play();  
! G: T1 G! M0 k5 [+ X; [! U) X
, A1 N( w+ u- W---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  " N) z7 e2 }4 Q" l) f
够 被 调 用 的 。  
3 w  y- R  w& F3 u% e* b) i( X2 D7 ^  h% Q$ @0 `0 `1 j3 v
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
+ T7 W$ C, y- x  b$ D2 o" q% C$ v! Y4 |1 V, {+ j6 r
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
& x9 V/ D2 [/ \  t
8 g4 Y6 O1 C  w! ]' P, x$ k, T---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
, o  _+ S3 c, i5 ?8 k; `' q1 B* l* W* L! N$ N/ |3 q
---- 程 序 如 下:  8 j7 x1 I7 L7 ~8 s$ [

2 p- a& i7 N: U1 | 服 务 器:  ! f  S8 Z, [" E' P: [
import java.util.*;  : g7 [3 W" E  ?! z' @8 U: p/ }
import java.io.*;  
8 d4 e' u. ]2 X: Mimport java.net.*;  1 V  o9 v, o& |( Q5 w# X# {
import java.awt.*;  6 j/ B5 H* o4 K2 f. s6 U  k
/ t: }/ ~: b- L) v5 R
public class ServerT{  # w4 V2 K5 j$ e6 Y
  public static void main(String[] args){  
# X0 ?( m) k1 }9 d, I    Server server;  & Q6 q) [" x$ E
    String clientRequest;  / ?4 {$ T: m7 A# n& ]! g( y6 w/ R
    boolean quit=false;  
- M+ o) h' i6 {9 l( T  K    server=new Server(8001);  ) U8 y7 _- m* E7 u2 J$ G; x
    while(!quit){  
8 Z: \3 l' x5 R; X9 W# ~      DataInputStream keyboard=new DataInputStream(System.in);  
9 r6 w! r' L/ Y  f$ n; ^: G" [      try{  6 J+ P6 D* f: e% b$ U: U9 ^  ]. s( L
        clientRequest=server.in.readLine();  ' Y. X( z; ]6 x! ~- E* z) u& v- [! |
        if(clientRequest.trim().equals("CLOSE")){  
( o& a' m! J2 E; v3 U/ h          System.out.println("Client says: "+clientRequest);  
3 N9 H& G/ @: r( Z4 S          System.exit(1);  : `0 q( x* d! N4 [, D
        }  
& D  ]. y; z: c) _        System.out.println("Client says: "+clientRequest);  
+ Y% @3 b! S8 K        server.out.println(keyboard.readLine());  
9 x& I+ o) o7 f4 D' [8 U% U0 ?       }catch(IOException e){  
, b1 w; @4 z/ G) d' o        System.out.println("IOException in server.in.readLine()"+e);  ' w7 y: h% V# C1 N8 V
        System.exit(1);  ; K; N# m. w6 T6 m
      }    j( ]" n+ s0 H5 w+ z; I) m
    }  
5 d8 B$ I6 v' A9 e  }  ! I+ V' E) |. i7 R
}  
9 G* y, X3 z$ B" ~# X# pclass Server{  
; ^4 r, d& z6 S  Y; u5 }* X" X1 k  private ServerSocket server;  8 d. J1 j7 a. r  J
  private Socket socket;  
, {1 m5 R( x  ?) d3 D  public DataInputStream in;  
' ?1 F0 V# j  s& k+ M; t* {' v  public PrintStream out;  " |  P" V0 {2 `( k% Z5 w
  public Server(int port){  
' o& g8 i$ I- j. ~! Z' T9 w    try{  & [2 v- o. C, c- X
      server=new ServerSocket(port);  . g. c3 T+ [$ X* r2 C4 O2 S
      System.out.println("\n  
' W' L$ L1 _  }5 x; F3 H5 B; e*************************************************");  : h3 d# e* U2 E+ M2 Y
      System.out.println("\n @(              Version 1.00 97/12/30 ");  5 y2 Z- F5 n% B7 I; J! \8 [% V9 x
      System.out.println(" Copyright (c) 1997  
+ g& D' B( Z4 k7 `- `$ t              (Lui DongBing) All Rights Reserved.");  " r3 U% E3 V. h$ @) _
      System.out.println("\n  7 [0 s# [5 g+ V" `
***************************************************");    I9 I4 L6 m8 j2 k9 H2 W) S
      System.out.println("\n Server is: \n "+server);  6 }: o7 B& a6 @  {8 s
      socket=server.accept();  0 y; F4 G$ Z6 G
      for(int i=0;I < 260;i++){    // 发 声 提 示  
5 h( C! A" h0 W9 d1 R& e        Toolkit.getDefaultToolkit().beep();  ! L. L' z- g' x* b, @
      }  
* W4 E+ x0 {! b. `2 U. \+ z4 a1 [      System.out.println("\n Server is ready ! \n");  
4 C! A/ Y/ {- n) v/ E      in=new DataInputStream(socket.getInputStream());  
7 |4 E+ A, {, }# y& K/ t2 D, ?; h      out=new PrintStream(socket.getOutputStream());  
5 z& M0 d2 v, }5 d/ z      out.println("We connect in "+new Date());  - `" `5 E3 ~7 I1 d6 W& |
    }catch(IOException e){  
9 j1 o* F7 x% K0 L2 o  X3 d      System.out.println("Server is failied !");  
: B* @' w3 t, x4 |% }5 J    }  ) y  g5 I1 k" c7 `  `/ E4 s  D' X+ v
  }  
" }1 r3 j) M0 Z" q! D& }}  # f, o6 J; P2 ]: a
   7 M. B2 u# |% w0 _9 |) @: h1 z

$ K" P7 E% h1 a3 w; p+ x 客 户 机 :  
# v: q5 n+ q2 i% ]4 _import java.util.*;  
: M5 A- |+ e# ~import java.io.*;  ( W* |8 x7 G1 y+ O
import java.net.*;  
) w( p$ L7 i3 l4 Z
  ^- E, u. R+ d7 Y3 ppublic class ClientT{  
0 d: |6 L6 g3 q, N& F6 p5 f6 m  public static void main(String[] args){  & `4 U7 h. p* o& t
    String welcome,response;  
" ]$ e7 A! H) t( ?$ ]% r    Client client;  / l7 H, X8 Z# _
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
0 Q, k8 B; `5 O3 z8 ^5 Z    boolean Bye=false;  
; E0 l* ]) O" J3 Z    while(!Bye){  
  I* U, k" a3 s2 T    try{  
2 n6 J8 H4 e9 x6 F9 L      welcome=client.in.readLine();  & d3 V5 J) S9 t# E, j8 ?
      System.out.println(" Server says: "+welcome);  
9 t) t; F$ |0 c- \0 z      client.out.println(keyboard.readLine());  7 M6 l4 a" h( E* x" k# l3 W4 R' y
     }catch(IOException e){  
: R) i9 Z, S* B) U5 F: ]8 D; V# H      System.out.println("\n The talk is CLOSED !");  # g0 V. u% j' y: J
      System.exit(1);  
& a  E8 U5 W+ P    }  1 v% Q( |5 o: L. ~0 f
    }  
5 Y+ p$ i+ ~! W( e6 O5 N" W    try{  
, R$ ~: Q1 R4 D$ K& ]      Thread.sleep(200);  
# Y. c* v5 T7 E) S    }catch(Exception e){  " s% G, }: t$ R3 b
      System.out.println("It is a bug !");  
/ a- k- B5 c9 K! M6 }9 {    }  
& P8 F- W/ y$ m9 D  }  
0 c; M0 ?" m- [/ v( N}  
) A4 Y$ }  `  N  B3 w; m8 V8 hclass Client{  1 ~0 s' ^$ A5 \2 k0 z$ H7 S
  public DataInputStream in;  
. K8 d) A) }  n+ p+ R  public PrintStream out;  ( L$ d, G. V0 @4 X3 c; j
  private Socket client;  
; D5 b' I2 |5 j3 y) a  public Client(String host,int port){  * ]/ A0 q7 K6 F& a7 l' M
    try{  
5 p& S/ H# k- g, I$ X      client=new Socket(host,port);  6 l! R6 R6 o3 v/ }0 X5 r) h
      System.out.println("\n  
0 P5 s9 D3 h! g( o4 E! U) l' U7 L3 a. U***************************************************");  
6 _  U' _, p! `      System.out.println("\n @(               Version 1.00 97/12/30 ");  5 X; Y2 Q, q$ T6 t7 n: B0 {. p5 i
      System.out.println(" Copyright (c) 1997  ) ?: i; \* D8 b7 T* V" ~/ K: \
          (Lui DongBing) All Rights Reserved.");  
# E% B/ t1 U* ]" R. P9 ?      System.out.println("\n  ) p( a& V) n  ^- l
**************************************************");  1 `1 d1 J' Q2 p8 ]
      System.out.println("\n Client socket:"+client);  
! \4 s  a6 O$ Y' b      System.out.println("\n Client is ready ! \n");  
/ n" s0 y- Y2 }# t9 n% q" k8 O      out=new PrintStream(client.getOutputStream());  ) V  g9 G# t" z9 `6 B0 l
      in=new DataInputStream(client.getInputStream());  
# W1 u' F' X# K* ~  w' u$ e1 ^* H     }catch(IOException e){  7 G$ J  l$ C. b
      System.out.println("\n IOException !\n"+e);  ! s9 H; ]4 ^; {# V
      System.exit(1);  
* \- O  K* l- x2 I# _# g    }  / j+ x+ g+ V# T
  }  
% n- y, ?: I( \3 ]( g}
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
如果我没给你翅膀,你要学会用理想去飞翔!!!

33

主题

10

听众

1691

积分

升级  69.1%

  • TA的每日心情
    开心
    2014-7-8 08:29
  • 签到天数: 201 天

    [LV.7]常住居民III

    发帖功臣 新人进步奖

    群组PLC和单片机

    群组2012第三期美赛培训

    群组MCM优秀论文解析专题

    群组沈阳理工应用技术学院

    群组学术交流B

    回复

    使用道具 举报

    zq1987884        

    0

    主题

    3

    听众

    19

    积分

    升级  14.74%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    wangyu249        

    1

    主题

    3

    听众

    54

    积分

    升级  51.58%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-27 07:57 , Processed in 0.463188 second(s), 70 queries .

    回顶部