QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  ; w$ e1 O7 ?* h5 J# g

4 T, C. h0 J- j! K/ A, u+ U1 j: M% x---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
8 B8 v- D& t! s9 x- C* q& D# H
; P/ M! b/ [: i  p. ~3 I  n3 |---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
. k  D" g: Q  ]4 p* [; PApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  , {" o+ G. B3 \$ ~0 ^0 r' c: X* u% `
+ }2 v. ^4 j, u. a9 [; ~; _
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  3 t# T, b6 o  O6 A5 W9 \

  U) k  Z  q3 k& V0 s---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  2 `" l& @7 y" O5 w# L9 Z

7 B  P" q% V$ \! Z5 {---- 例 程 如 下:  
! M5 W. ?0 p# d7 b  D  `2 u! g$ y) ?
2 a9 i4 ~4 k0 S3 H. R5 B$ i; `" g6 N      import java.applet.*;  4 ~/ p2 u: K" e' q, N0 C% `
      import java.awt.*;  
. J* K8 C3 i# T' |- _8 I      import java.awt.event.*;  # _) Q, V! m" u6 e
   
* }$ L0 `% g* _( Z- X  ~" P; _
) @! Z8 ?4 V9 D      public class Example extends Applet implements  
. d9 h, {3 {* C4 e! _: Z7 f                       ActionListener{ //          public static void main(String[] args){  1 A- X) w- R! s1 g  o4 r! O
           Frame win=new Frame("Example");  $ U/ e& h9 [( ^# w0 ~! B( K
           Example example=new Example();  
1 r1 v0 V8 N) J+ Q3 S           win.add("enter", example);  6 t/ W% f0 W. Z/ Z6 G: F
           example.init();             //            win.setSize(600,360);  8 P+ H# G& P4 E
           win.setVisible(true);  
) x9 e/ q) h5 U2 `" X         }  ) |$ n; z: R0 j) h
      public void init(){                        //            Button button;  & S1 z( L) k; P, ^9 L: G/ p4 ~
           Label  label;  
) H# @8 l6 E8 E1 J, L; w; I           button=new Button(" OK "):  
! v0 f* \: I6 p7 M) O! y. Z/ X% o           button.setBounds(280,200,100,20);  1 {0 z5 u% y4 Y; |# [$ f9 c6 C
           button.addActionListener(this);  
/ m! E, e5 o# X3 p) f           label=new Label();  
( d4 F5 |( T# m! l4 Z           label.setBounds(260,100,200,20);  
. I5 L# V5 b5 Y, \           add(button);  
6 ^: ]9 D5 r  \# u. X/ W8 X/ v           add(label);  
+ i  ~! L7 o5 l$ K: C         }  
( o6 ^& f2 x6 z1 W# D7 Q/ c) B       public void actionPerformed(ActionEvent e){  ! J. t; S8 Q) _& k; m  K+ D% i
           Object source=e.getSource();    o  r9 x$ j; C" q! L1 o! l
           if(source==button){  9 r! E0 k+ u3 u4 d; ~# Y5 w/ U
             label.setText(" It is a example !");  
- u8 G% T9 V" `' `2 j3 R$ S1 f           }  
! e* R' L- g0 l, S1 D         }  
* w$ e1 L' j$ |8 B      }  
/ c6 X# i$ i" i' }) a% O- x
$ a+ a% L1 w2 J---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  $ U8 O) X8 D6 _% E& y
! w% s: |+ ^6 h
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
& C' Q, p; @2 S( H: C
7 z2 L9 b; |1 `0 x; o7 q: @' ^---- 2. Java 中 的 发 声 提 示  
0 ^. x  S1 K: V& T; c
. P  D" @8 h4 J! y0 i% e6 W' R) f---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  : {: K8 W* D, ~* ^6 q( R

5 `7 d0 @" ~, J% ~8 I---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  ( _0 F% W" {( ?( h6 x/ K% o

- v  V, R: Q! G7 r$ F       AudioClip audio;  
) u: B3 |4 }+ S. {0 V3 c         audio=getAudioClip(getCodeBase(),"Hi.au");  
8 |% b# i( ~; j& @7 l/ H         audio.play();  / x9 s  r! c7 j( G# J% d: b- G5 H/ B
) I& W" J& Q3 @* ~/ d3 [3 ~
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
* j8 e  }4 \& `+ b, I够 被 调 用 的 。  ( m5 c, K2 o6 h9 X( ?
6 C) N. \4 O1 Q" o
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
$ V1 K( B7 H! T- M" R8 n
4 u4 _- R, r; R- D) R& u---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  , ~6 G( p; U  G9 T7 {% v9 c( o

8 Q4 l* _. Q( k: M---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
9 w; [( w" I& f) h+ |  z, _$ A& ~  t2 v
---- 程 序 如 下:  
7 N- L7 @5 C6 y. Q% j, ~( k0 h2 g3 A+ U; Y
服 务 器:  
& Q6 [: q3 v( {% c( w0 r; n+ d, iimport java.util.*;  ' k3 i7 a) }, E
import java.io.*;  
6 ~8 O  E, o  `; y+ j7 U% fimport java.net.*;  
: {3 I% ?2 |. \: {import java.awt.*;  
( Z) \# B4 o$ w) P8 I
/ A  j4 p8 }2 e+ H+ Zpublic class ServerT{  
2 c3 n) \2 _. O! s  public static void main(String[] args){  
4 X5 Z- b# m2 G" h    Server server;  : e! G8 f$ H- p3 Q: t) V
    String clientRequest;  
+ [: a  h( s2 W    boolean quit=false;  
" }5 d' `% j3 N2 _, _, Y& J    server=new Server(8001);  / E6 i! H+ b. P; F$ A' g2 R3 [
    while(!quit){  
& r% o7 S: ?% p3 T: r5 A% \) ]      DataInputStream keyboard=new DataInputStream(System.in);  " Q3 B5 g& P& F  k- s; r
      try{  
* g- J4 Q" m& _5 ?+ c/ g% [' R( n        clientRequest=server.in.readLine();    U' e: Z* b4 a7 G' [; `, k' u
        if(clientRequest.trim().equals("CLOSE")){  
; j) B* ~4 x: Z2 }' Y          System.out.println("Client says: "+clientRequest);  
4 d# M0 W4 f! j, B          System.exit(1);  
' v0 U# |0 Q+ S; W        }  # w+ T" U# H% z" B0 P7 _, o  d
        System.out.println("Client says: "+clientRequest);  
2 H/ e7 P4 X, h/ c. S. N3 H        server.out.println(keyboard.readLine());  
! x! b& o" y, b; I/ O+ x2 {; h       }catch(IOException e){  ; u4 [2 l6 W& H$ s2 s
        System.out.println("IOException in server.in.readLine()"+e);  
- w8 n# m7 ^8 e) u        System.exit(1);  
& N# n# k" ?5 Z6 b      }  
% M. q# @, N/ A% F    }  
7 R, x: t6 w/ Y  K9 `  }  : D$ {5 [# f4 G9 ]' r
}  
5 R& }/ T# a' i' Uclass Server{  
. a) o+ U2 w3 w( x( c' y  private ServerSocket server;  2 {5 J- S1 ^) B! S' {0 G$ t
  private Socket socket;  
9 |  m3 y0 B# s2 h& n4 M+ x) }  public DataInputStream in;  
4 G4 b; h4 D9 A- A# k  public PrintStream out;  5 p9 X" ]+ Y$ X4 ?1 Z
  public Server(int port){  8 B$ u! X8 T" p' w
    try{  9 U. a$ i: d1 i& ]6 e$ y
      server=new ServerSocket(port);  
% g/ V8 F* x7 C/ n% Y2 K      System.out.println("\n  7 X, f$ g2 n- s  D" h" h
*************************************************");  
, {3 W( X8 ~$ z9 B: W( {/ e. N      System.out.println("\n @(              Version 1.00 97/12/30 ");  / E3 `) g! [: ]0 p
      System.out.println(" Copyright (c) 1997    q0 {8 O# Z7 \; e: J8 z  Z+ A( G
              (Lui DongBing) All Rights Reserved.");  " z& W! L- F/ v- h2 E0 @/ g
      System.out.println("\n  
* m. D3 x$ x/ I" a2 |9 b***************************************************");  
+ O9 t# N4 F/ L5 w      System.out.println("\n Server is: \n "+server);  
/ B: {- v" c/ u( W' C6 R      socket=server.accept();  
+ S4 L$ T+ j+ _$ r5 ^      for(int i=0;I < 260;i++){    // 发 声 提 示  / `" Z2 r% @7 D% \# U& o% H! W6 f- f
        Toolkit.getDefaultToolkit().beep();    d( a! L/ f, v, o  u4 N7 a+ {6 K2 P
      }  
5 D+ \0 u* }4 p9 s      System.out.println("\n Server is ready ! \n");  * G& X- n# V+ A; {- G/ J, Q$ n0 H
      in=new DataInputStream(socket.getInputStream());  8 |+ u3 _' \1 y  K6 k' R: a
      out=new PrintStream(socket.getOutputStream());  
5 j( X, g% y# b7 g4 O9 D      out.println("We connect in "+new Date());  ) n9 u* J8 a. G1 x& s( h& ?
    }catch(IOException e){  
$ s5 y  T/ h, R2 X; w8 k) p$ C      System.out.println("Server is failied !");  
/ O+ n" ^9 [+ M4 w0 c- b; M- e    }  . U& c$ e3 {% ^9 {' S6 X
  }  8 p% K. D4 Z1 y- Y
}  0 w5 H$ o3 x# X8 {7 b
   $ {6 M1 v8 n, q% k. J% r

# M5 j$ \& o) g+ e 客 户 机 :  
- W; N: G( d3 m0 \: o6 c+ P& z( c) Nimport java.util.*;  
, y8 C' T: l5 y+ aimport java.io.*;  
; g- w+ y# R" Yimport java.net.*;  
$ H1 z7 j6 B9 J; {" R9 ]" T, }
public class ClientT{  
% I; X8 |8 L% U6 r8 Q2 {  public static void main(String[] args){    z) B: p( P* S+ \
    String welcome,response;  
' A# o9 C% F' q    Client client;  ! b4 N  G( B- k$ O, _- l; X
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  5 S" T; z% }8 c+ F( |: j" b
    boolean Bye=false;  
" ]5 D  a) }4 |  F( d" g    while(!Bye){  - h$ H, V4 i0 Z9 w( G
    try{  ( O/ Y; W  b" i0 R6 z
      welcome=client.in.readLine();  9 Y' x8 L1 [8 B: Z) W
      System.out.println(" Server says: "+welcome);  
) N" @, H3 A4 A( K8 g( U3 ^& _      client.out.println(keyboard.readLine());  1 K, @2 [% P/ j4 t1 ]
     }catch(IOException e){  7 v( E, t# E8 ]& k. D
      System.out.println("\n The talk is CLOSED !");  5 y6 R/ p" ?, F; m9 Y2 x. G
      System.exit(1);  9 y- C/ z6 ]: Y6 S3 s1 X
    }  2 t8 S8 }& j4 r( h
    }  ) ?4 R% A) G3 |5 W1 n& \
    try{  
( E  O+ t! U% C2 p7 T% @6 g      Thread.sleep(200);  
9 }; B# Z5 {+ t, m9 Y5 ^  C' z    }catch(Exception e){  
" s' ]% v" x8 d/ i+ G3 _( s      System.out.println("It is a bug !");  
6 R0 X( b4 R3 f8 u. `4 u6 V    }  4 M. r, y+ V1 G' I9 a# e: m
  }  & f. t. [' L. `, t0 U+ o- b' I( N9 y2 e
}  2 j$ ?5 Q" k$ I" E# u- k. c
class Client{  + R: T# d; g! ?+ O
  public DataInputStream in;  
$ m" U9 V) _/ d5 P7 h4 P  public PrintStream out;  
1 Q" m. I: ?' Z" z4 r, d+ n) T  private Socket client;  
3 W* b4 ], N7 q: t/ d3 w+ @# `  public Client(String host,int port){  
( u0 a# y8 S- U    try{  
3 E1 a% J3 T% A$ g( z9 S      client=new Socket(host,port);  ( a3 I; ^$ {; b0 R; G9 B% H) _! H
      System.out.println("\n  & W6 w- W  ]8 l, O$ C
***************************************************");  4 O6 d, k- {/ _6 A4 [
      System.out.println("\n @(               Version 1.00 97/12/30 ");  
/ N4 S. c0 [$ F* ]/ p, X( O( F      System.out.println(" Copyright (c) 1997  
  ?- [6 B+ r. M          (Lui DongBing) All Rights Reserved.");  & W! b8 h( J8 w0 M! W* ^
      System.out.println("\n  - W; I3 k6 d; @9 G) s9 {
**************************************************");  0 P2 |4 P' `1 L2 g, C
      System.out.println("\n Client socket:"+client);  + C& e& J6 \' G+ {* g; Q! W  u
      System.out.println("\n Client is ready ! \n");  
; @: l5 l0 B7 z1 y* U      out=new PrintStream(client.getOutputStream());  
$ X0 {; ?" |( M& b! Y3 v- [% M5 \      in=new DataInputStream(client.getInputStream());  5 R" ?; L" S0 a! X8 k6 e/ c: z# |
     }catch(IOException e){  
3 }- Q% }! M) }7 ^, a* X1 E      System.out.println("\n IOException !\n"+e);  
5 s4 [# n$ b3 Y8 n0 W1 x      System.exit(1);  
2 a. \: |9 |9 a    }  & G0 c1 L! H# D" A% P
  }  - O& Q" @- j6 i+ G' _
}
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
如果我没给你翅膀,你要学会用理想去飞翔!!!
wangyu249        

1

主题

3

听众

54

积分

升级  51.58%

该用户从未签到

新人进步奖

回复

使用道具 举报

zq1987884        

0

主题

3

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

回复

使用道具 举报

33

主题

10

听众

1691

积分

升级  69.1%

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

    [LV.7]常住居民III

    发帖功臣 新人进步奖

    群组PLC和单片机

    群组2012第三期美赛培训

    群组MCM优秀论文解析专题

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

    群组学术交流B

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-28 03:57 , Processed in 0.751925 second(s), 70 queries .

    回顶部