QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
; ?% Q+ X7 _! \# b  ^# f  \" I4 A4 }) ?$ l* ?1 {- Z' ^
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
2 _; P: u# f3 {7 a$ C  B
+ l% H/ O' I. a" A---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  ! c5 E% S2 Q+ c6 K
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  : I, F3 F% l0 ~. _
6 [) Y4 I1 _1 Z' P
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
( T8 q4 u, a  F9 R
2 d) C$ k! K+ E5 `. ?$ }---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  3 b5 i8 ?3 ?) O8 F: a* T

) ?- I8 I3 P+ o2 {; h! S$ ~" I---- 例 程 如 下:  & Y; q- T* B( W$ C
! n) G0 `4 s$ s: r* ?( f
      import java.applet.*;  
1 F- c. \, U: y$ }( v6 u" j      import java.awt.*;  
+ V$ ?" C3 k/ I2 a9 }; C" C      import java.awt.event.*;  
7 {' o3 `" K3 I* R2 |   
7 b2 _" j( Z% f( L. c8 Z) F9 f* T( Q- {( v9 A
      public class Example extends Applet implements  ) z# ?8 ]- R3 F
                       ActionListener{ //          public static void main(String[] args){  
. r% J$ n( _; f/ G# Z6 Z           Frame win=new Frame("Example");  
* A% p/ D1 L3 O+ a           Example example=new Example();  
7 J1 I5 ~. ^$ c( ]7 E           win.add("enter", example);  
* l5 U1 v5 W. j$ t4 C           example.init();             //            win.setSize(600,360);  
( i2 w7 m2 d% w* z/ e  X           win.setVisible(true);  
9 G, N8 a4 {9 e& R1 j5 V         }  5 F! a, `. u2 E$ M& d; g
      public void init(){                        //            Button button;  
$ G: L( z* r  O6 }. i0 Y           Label  label;  * M& G/ Y$ `$ r. Z, }
           button=new Button(" OK "):  
- m+ z+ Y/ O( o, }; B           button.setBounds(280,200,100,20);  9 v. n% Q. m) r. D
           button.addActionListener(this);  9 H! \+ Y  H8 s% x% j* K7 K. g
           label=new Label();  
- B" V0 D& o8 i, ^6 d& n4 f           label.setBounds(260,100,200,20);  7 E% N; I$ n9 z6 D5 T
           add(button);  % `# U/ v. m" h, ?8 B
           add(label);  0 a9 c! \. S: ?
         }  - s7 y( G9 I/ d$ L. m
       public void actionPerformed(ActionEvent e){    V3 [# U7 F; R/ @( h/ \- q1 F- e/ O
           Object source=e.getSource();  
" p$ \4 Q( _2 c7 ]: @           if(source==button){  
1 B% D: C4 H8 L0 B  [: J& M, r             label.setText(" It is a example !");  
& e7 p% E( _8 I+ |           }  
& K) b& u: |0 J1 O: I  \: ^         }  ! P  |5 a8 S% p$ n; Y5 ]+ D
      }  # \: `3 ~% W9 N: y
0 P  I+ r' ~( E2 x. F) k+ I
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
. ]* n& U$ z7 f7 O5 ~3 D. G/ B
9 [5 G' F- e3 p1 Q, C/ s  Z6 o5 w---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  2 c' }+ @6 w+ A) @' d  j

, i! K0 Y; W4 O& L8 D2 ]. j---- 2. Java 中 的 发 声 提 示  
" L# B1 h+ [& X3 i/ L
( C; _6 U7 r) ~3 w---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  / {: M. n* y3 X! p; h
4 u% |2 K& u$ y$ F% }
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
/ `) Q2 Y, B0 o/ S. t$ M5 w8 i. L. \6 |' F) U# I6 T
       AudioClip audio;  
- `! W5 L" y7 o3 i# w; X" B- g$ O         audio=getAudioClip(getCodeBase(),"Hi.au");  
% O" _# q; i( O( `0 T         audio.play();  
7 S8 M: R( {4 ]/ W. ]$ B- K6 E
/ o1 H$ t+ H( a3 v. N---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能    _6 q7 D1 T9 d$ ?! j$ R$ K3 ~) v
够 被 调 用 的 。  
. N2 E. U& L$ \+ e7 h+ V+ o9 Y% d& y; ]3 h3 S. l0 }
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  $ E% ?' m5 J! s; U/ v
1 F8 {, g* m$ v
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  # x' L' G9 E" m  h# u
0 S9 ?0 H- T8 ?8 N, C
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
7 y" Y8 q9 O5 W* |  m1 I; Q% ]% E$ `! G9 B2 w- N$ _
---- 程 序 如 下:  ' F# w! R% f/ e4 Y  T' ^: A

' V: B# G7 H5 c8 R/ N 服 务 器:  5 `# U* @# @( C8 Q$ ~# W
import java.util.*;  # ^( g7 U7 q' G5 C4 q, ~2 g7 S6 t
import java.io.*;  
$ e. f. j8 }! n, i0 L$ Mimport java.net.*;  
8 S; P& R3 t6 ~' bimport java.awt.*;  7 r- T, r- m( c! o; c' @. y

0 O  p0 d0 ^$ N. L6 j5 [public class ServerT{  2 E- z5 L% g/ I+ d% d/ K
  public static void main(String[] args){  
0 K' ^: k/ ~, p7 R  C    Server server;  9 d9 E' j8 G+ }2 \, O- m0 @
    String clientRequest;  
5 P9 y, m4 n5 Y2 u    boolean quit=false;  
! ~* a; N9 }: K" A    server=new Server(8001);  
% `1 y' _+ [5 G% ~/ Y/ W: k# O/ i  j8 Z    while(!quit){  
. e7 h' f2 P0 j# A" W3 V$ f! ?      DataInputStream keyboard=new DataInputStream(System.in);  
3 k: `, Q6 v# u' K) B" p      try{  
7 l* z' G" C1 G* R        clientRequest=server.in.readLine();  $ b  I0 f  ]" N
        if(clientRequest.trim().equals("CLOSE")){  
) }+ s2 |5 f/ V2 W0 d& H          System.out.println("Client says: "+clientRequest);  
) q/ M' Z* u) I          System.exit(1);  8 C" n: @/ c6 J
        }  
4 n. u2 m) l: f) F2 O: n: ^        System.out.println("Client says: "+clientRequest);  
. y$ u4 U/ x$ v6 F$ B$ z! R        server.out.println(keyboard.readLine());  : M* W9 i" o4 u3 ?' H
       }catch(IOException e){  - `; H$ V" F: o' w, j# O4 ^
        System.out.println("IOException in server.in.readLine()"+e);  " V7 ?1 m$ o1 k, |6 x4 e
        System.exit(1);  1 {& c% W8 Z5 q
      }  
$ w) _. w: g, r5 ?* M6 m    }  0 C3 i# _+ C9 h* j- }% @6 M
  }  6 m6 h) S* |& U% B( P
}  ) Q# W% N% \& E) C
class Server{    M5 n& s( S: q
  private ServerSocket server;  
8 w( U# M# A, g2 R  \3 G  private Socket socket;  
9 |7 P5 w- j) _( }3 _, e+ B  public DataInputStream in;  # A# R1 y; R# Q0 |4 l  p
  public PrintStream out;  
4 `1 s5 [2 S2 v# E/ v# ^; E! }" o  public Server(int port){  
; Y2 ?# E8 q: Q. Z( u' |: E: ]    try{  * Q: g" V4 v) l2 ?" a
      server=new ServerSocket(port);    v. }; x' ~: f6 }: ?/ r! h# j+ z
      System.out.println("\n  
8 f0 ~7 P1 r! e7 z  ^4 v$ k*************************************************");  4 x" J+ I2 k% [" W. _$ g( s
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
: v0 m3 A, U' z! ]7 p+ h      System.out.println(" Copyright (c) 1997  
& X. l7 ^8 V5 I' p! N              (Lui DongBing) All Rights Reserved.");  
8 c' x+ X/ K, s: m      System.out.println("\n  . b4 C( C$ o6 o  H( d7 s+ T
***************************************************");  " H: i) q  p2 |, R0 g" |6 F
      System.out.println("\n Server is: \n "+server);  6 G* R" o1 f5 b0 D# _$ E1 X
      socket=server.accept();  & u" ?1 u0 X6 a; t; F1 d5 F0 u9 b
      for(int i=0;I < 260;i++){    // 发 声 提 示  . b$ M8 ?! ^+ H. Z: O/ m0 g# r
        Toolkit.getDefaultToolkit().beep();  & S$ v4 K& A7 I7 e5 [' C
      }  
7 h: O' A. M" Y- ?1 X0 I, K: H      System.out.println("\n Server is ready ! \n");  ( F3 m& w& Q2 G
      in=new DataInputStream(socket.getInputStream());  
: N# v$ B8 r/ ^7 A      out=new PrintStream(socket.getOutputStream());  + f. Q3 G: b9 ]( A% J
      out.println("We connect in "+new Date());  
8 C; R4 O( C, \2 K( s1 Y0 P8 C6 }2 j    }catch(IOException e){  $ ]$ [( ?  r0 _8 E' n& L
      System.out.println("Server is failied !");  
# B3 V5 s; ]8 P- B1 s3 z    }  2 C* ^0 j3 ~  ]/ h! e9 n' _9 h
  }  
" F5 v7 i9 Y2 u2 R+ j- G}  
  t" z2 Z6 x$ L6 w& Q( n6 ~- o% i   
+ U  k1 Z1 c0 S6 Q# q" }8 P# T$ C1 S2 z
客 户 机 :  " [+ p2 {+ Q. G, u
import java.util.*;  & \/ F3 F" K/ I
import java.io.*;  ' |9 @% s8 d, @3 ?; l: y: D& a
import java.net.*;  
: S- d, k! g( h0 ?$ L
9 z: y9 X4 T/ @# F; Qpublic class ClientT{  7 }4 y& V( n+ @# v* x
  public static void main(String[] args){  , R5 S3 T) @. m. T6 }
    String welcome,response;  
0 {: B! W( C$ Z; c8 B    Client client;  4 u( j3 |1 _9 X! h' x
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  * u# }7 {5 ]$ o1 g
    boolean Bye=false;  ( z0 q& X% l6 t) B- `8 z7 t# s4 }$ B
    while(!Bye){  # u0 L, ~6 N- P% |: s' @# |" L4 K
    try{  : S; a1 A! J6 |  G! E$ v
      welcome=client.in.readLine();  2 O  ]) I/ G$ X+ H; n) p) `
      System.out.println(" Server says: "+welcome);  
; B& b) o& S8 Y6 |$ \7 ^/ r      client.out.println(keyboard.readLine());  
) C0 L4 x7 v( g% u) ~4 ]     }catch(IOException e){  3 N3 Z" [% {0 B' W/ ?$ w
      System.out.println("\n The talk is CLOSED !");  
# @2 I9 j7 K' c! T1 X' @      System.exit(1);  6 z: n  d& b/ q0 B' }6 ~
    }  
6 s3 a  Z7 @% Z7 s    }  0 w: o* K, P$ ?7 o9 J2 k
    try{  
6 W1 x8 f9 W, R      Thread.sleep(200);  
' i) |4 m* u2 K, U- ]2 A$ w$ i    }catch(Exception e){  + n# i7 Y1 e% g) ?" w
      System.out.println("It is a bug !");  
6 u1 B2 G! N( ^  j2 _  x( I    }  3 m0 g: v7 j5 e& G+ S
  }  6 W3 q. Q# |4 y, c7 P( ~
}  
. @" G+ E* H9 b* X* R$ o' |. z# O  Sclass Client{  
: B* P( b: s! B9 t2 H+ V* |% _! X  public DataInputStream in;  6 m, [- o; K6 w) G+ ~
  public PrintStream out;  8 Y+ L! J! F1 [, ]! l
  private Socket client;    @+ w7 E) j9 V
  public Client(String host,int port){  0 S, h% o' _( k1 ~, R* i/ E
    try{  
' k3 S" h$ Q8 G: ~      client=new Socket(host,port);  
8 U& Q; L, Y4 k9 P/ F      System.out.println("\n  8 m1 P* L* q. N& Z/ e& D. |9 B
***************************************************");  
; Q6 y, n8 F" L, r/ h  e      System.out.println("\n @(               Version 1.00 97/12/30 ");  
2 X( k' O- a! }5 {: b0 A      System.out.println(" Copyright (c) 1997  
  @; m7 R) `0 }5 c          (Lui DongBing) All Rights Reserved.");  
( t; U6 R- Y6 ~4 z3 @      System.out.println("\n  
9 J6 ~& N; a( ]6 n**************************************************");  
7 e$ W& _2 y( K- k' i      System.out.println("\n Client socket:"+client);  2 m* Z3 q; u$ ?2 ]3 n" W7 u/ y$ s
      System.out.println("\n Client is ready ! \n");  2 W  v- k2 T9 A) E5 d5 l( B4 N
      out=new PrintStream(client.getOutputStream());  
! l( r$ \5 Q% V) e      in=new DataInputStream(client.getInputStream());  
: Z0 ]6 J& g( o0 X     }catch(IOException e){  
: z3 G% a$ z% N' Z8 P3 u& H+ ^      System.out.println("\n IOException !\n"+e);  
1 r2 F0 }9 w1 `0 @      System.exit(1);  5 E; L9 x! v1 L: ^& ^% _! c9 @* e
    }  
6 H3 u  ?1 z  N  }  / v! s0 k, [) X
}
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-6-11 00:23 , Processed in 0.472770 second(s), 70 queries .

    回顶部