QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  - W8 J, w& O  t+ r) \6 E7 c  g7 ^

# A, l8 Z' @. F' ^; U. C---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  : F8 x& W, C% x  u; e) F

3 B" f, Z% M. }, Z0 i$ `---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
9 }! F( C% B6 ^) b' P& ~3 tApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
; z8 y" E5 h# J) P# ~) {) I8 @5 Y" L1 q& a
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  $ [; U  |. k3 L/ z3 l$ o

6 Q7 _( \- m  G9 r/ w---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  - y" g' O. r. f4 P

$ r/ \9 k' l& Z" c( F/ B: |/ |4 R---- 例 程 如 下:  ) ^: D! O: }+ a8 n3 K3 P
1 `1 k+ \( t$ p  d' c- O
      import java.applet.*;  " V+ A/ e. Z8 L, D% d; g
      import java.awt.*;  
+ g: Z+ l0 y4 i* K2 R/ d      import java.awt.event.*;  4 g! ]1 @: o4 J2 F; c8 M7 k" M
   
) F* d7 }( a, d- W( v% f! J
' G" m) V2 A6 e/ T* ^3 Y" j      public class Example extends Applet implements  
( }" v7 Z; Q8 O5 w! u                       ActionListener{ //          public static void main(String[] args){  , N$ {) x: B. V
           Frame win=new Frame("Example");  
3 A' l* G* [) C6 r; o( f( _$ }           Example example=new Example();  & V/ q1 B* m+ @7 L
           win.add("enter", example);  
3 Z/ ]$ m1 o2 `9 |           example.init();             //            win.setSize(600,360);  
. o' q) S4 U( f4 f, N           win.setVisible(true);  0 q: f$ r) K( d$ D, J1 O
         }  - X: C" E/ q2 c  x/ O8 O
      public void init(){                        //            Button button;  
2 x# R& R8 I( q. e           Label  label;  
3 ^# \3 o# W% `5 J+ X           button=new Button(" OK "):  0 B/ g0 j4 I4 n7 c( L
           button.setBounds(280,200,100,20);  . t1 ~7 \# I$ O) B
           button.addActionListener(this);  
4 O& a! a% T' P4 O' M           label=new Label();  , g4 X$ K. K% h+ v0 s6 x  d
           label.setBounds(260,100,200,20);  
8 f+ _! f0 _# f8 M5 l6 i           add(button);  4 P$ @: s$ ]7 a7 d# c! Z* q
           add(label);  
8 v8 o& d* f* i0 r- q: K         }  / w! i" S2 i  s3 f$ a5 H1 ^
       public void actionPerformed(ActionEvent e){  % g  _: p+ y+ s4 G3 e" t0 n, }
           Object source=e.getSource();  5 P* O) F9 a" J- T
           if(source==button){  
4 J& J3 T4 T6 L, z             label.setText(" It is a example !");  & ~3 H8 T0 n) ^! m
           }  
$ g" G. m% V, q. w: T         }  3 {+ U2 C* V) ]
      }  
/ K# a# n! _6 {' s7 ?- p" T
5 |* W$ D5 W' ?3 f2 }---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  + q% W; |1 q9 _7 y

) j2 Z* ?$ H: h  E4 y9 o---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
4 m7 d# P* j* w  e5 Q
9 R6 H, l1 C1 K) F---- 2. Java 中 的 发 声 提 示  ; D* S! L- }0 ^2 }8 [
( O7 t( l; r, g; ]' z
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  1 H% E- u: N* Z: O7 ?: P+ @# \' O

3 w  M* y! s8 v0 M$ r  e---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
& I+ t  ^: K/ B- d3 L9 X
: u) p- b6 v7 I$ T       AudioClip audio;  
% e/ O7 e. `6 L) r2 }         audio=getAudioClip(getCodeBase(),"Hi.au");  . Z9 g2 t4 X8 w, [- P* K" |9 `
         audio.play();  
5 }. l+ p+ B$ I0 q9 B, z5 h; ^! G
) _2 k* @; c' S9 M  l7 x---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
# n1 _- X* |7 Z0 ]够 被 调 用 的 。  
8 W: P% D5 d" v# J8 U3 [0 A0 m' P  a/ E' \
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  ; l" W% z' G! ?' C

& j1 `, S- t% {) U/ A' b' p---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
" W. j' l4 `1 Y. ^5 S8 o
1 y6 Z& F$ q6 s1 C7 |& t---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  ) w$ K; n9 I9 t2 m7 j
$ Z4 o, T8 _7 B# Z
---- 程 序 如 下:  5 L. b. ?9 M4 a
9 l" d9 p  m" |4 {! }  c
服 务 器:  1 I3 q2 y- |, _5 Y3 w$ B
import java.util.*;  
5 U! X8 y) c/ g" i" }import java.io.*;  
  o2 F% I9 s$ ?9 u/ _. _0 jimport java.net.*;  
8 m& [( t- f; Q( Zimport java.awt.*;  3 {# r" W/ B, O/ E0 z6 N

1 j, A; L( t# i* [$ Apublic class ServerT{  
* o$ E6 I) K8 I- N8 [  public static void main(String[] args){  : o  H* E9 d. F% \) a: n
    Server server;  . k; x. I# b0 Q5 q* a/ F
    String clientRequest;  / J: u5 z+ ]; C5 r( B3 K/ s
    boolean quit=false;  
4 z. R. r4 h( p! B    server=new Server(8001);  : a" o" a9 {, R
    while(!quit){  1 p, d# q& i* n# x$ H- T* P
      DataInputStream keyboard=new DataInputStream(System.in);  
* v7 j, ^) b0 m) {5 g7 z      try{  
; z3 f! t* a! |+ U( J        clientRequest=server.in.readLine();  
% W! j9 s% ?0 ]' z$ B        if(clientRequest.trim().equals("CLOSE")){  
) E: l6 s% `  ^, W# u' F          System.out.println("Client says: "+clientRequest);  
+ c( J+ T% [. \6 L8 g6 U          System.exit(1);  ) l* t1 F" g$ ]' p7 k
        }  
5 a8 |- F% A" e. z& u        System.out.println("Client says: "+clientRequest);  
/ p6 S, m1 C: f, b( C+ N! `/ A        server.out.println(keyboard.readLine());  + B2 I1 J# i# ]* p7 `
       }catch(IOException e){  * n3 C( m: t0 @* |
        System.out.println("IOException in server.in.readLine()"+e);  
) D9 n) G4 f8 ]# f        System.exit(1);  : {& O( t/ j0 ~, @7 O: i- y/ f2 A
      }  
8 L- E. F9 O3 D' m4 @7 q* R, _$ m4 E) a    }  " @. [4 n1 S2 _
  }  
, T" m* y# d- I% j}  " V" s3 q! Z6 N' k7 k) ]
class Server{  
: B4 l. g/ I) [1 g( k! c3 w  private ServerSocket server;  
0 d/ D" U5 j7 {4 G/ ?: T  private Socket socket;  
" y( C" T* J$ e  p  public DataInputStream in;  9 ]/ e* C- L% k& t' {" \% q
  public PrintStream out;  
8 H% B0 z2 b9 c9 q  public Server(int port){  7 g4 T1 `" f& R; `: Q
    try{  
. \4 g$ a: x" N) V, ?; [      server=new ServerSocket(port);  4 l/ H* t: I. {
      System.out.println("\n  & ?" Y8 N  m4 l
*************************************************");  
1 j0 B& D4 \9 {1 P* o2 j      System.out.println("\n @(              Version 1.00 97/12/30 ");  0 M& {& T) n1 |+ u+ E( c
      System.out.println(" Copyright (c) 1997  6 F7 B% Y7 J' d, q" j) R; Q% y
              (Lui DongBing) All Rights Reserved.");    a- Q% t" P3 Z9 r, I7 V' S4 o
      System.out.println("\n  % B* h* N) l% f! k# ~4 f3 l7 H
***************************************************");  / v' k$ e  o5 }& X, j- K* |, [
      System.out.println("\n Server is: \n "+server);  
6 t* `+ b# J9 U4 Y# w, B$ i) `0 h      socket=server.accept();  7 m4 q$ I. R8 y6 u) }. M. A0 d9 k, m& r
      for(int i=0;I < 260;i++){    // 发 声 提 示  & n2 |3 a" A" u) d; E3 E
        Toolkit.getDefaultToolkit().beep();  
' x8 }7 A, ~! t/ \      }  5 ?# n" V# T0 H. _" \
      System.out.println("\n Server is ready ! \n");  % E' h" N' k. A0 N2 i* L
      in=new DataInputStream(socket.getInputStream());  
, `% I/ y3 S2 I. }( a- }      out=new PrintStream(socket.getOutputStream());  * z9 e, u7 u; M  ?. v8 [7 h
      out.println("We connect in "+new Date());  - Z3 D" V$ h2 K7 G; S# ?
    }catch(IOException e){  
2 p, p- v# D0 i( T. U# }" b3 G) y      System.out.println("Server is failied !");  
2 k$ x( ]* T" J  X' ]( y: O    }  
" @1 _9 R, P$ E0 [: i+ h  }  
4 W+ ?5 w9 B$ z" g$ C8 z2 t# N+ j}  
- r8 Z8 N( o/ c3 [   
1 Q$ K4 A' c4 z! C2 ?  Q
+ V3 @0 T$ B- M2 }1 i 客 户 机 :  ) b0 V% z$ p' g0 M
import java.util.*;  % G. T7 u- z& G, E- v' z- H" @
import java.io.*;  
) i/ u5 ?- _! k- R$ @& G$ Eimport java.net.*;  * S8 `1 g- F0 ]

9 U4 Q2 e" f+ `0 lpublic class ClientT{  
, i9 }9 d; i$ i# |  T  public static void main(String[] args){  & s. o. w4 i' x1 K
    String welcome,response;  
" b1 N9 d: r1 y    Client client;  
% ^, @+ \+ y$ k; @3 Q' O4 j    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  6 @" p; |7 _0 l; ~% F/ o
    boolean Bye=false;  
8 K6 U4 g* Z: o4 N0 S    while(!Bye){  : }2 }( c1 C* k5 L1 k
    try{  
. p5 @: q/ }# _' ^* H1 w9 m  @      welcome=client.in.readLine();  
0 F- G# v6 W) l  V& `) G      System.out.println(" Server says: "+welcome);  5 Q0 g. [( T: Q1 d8 B8 o& ^2 ~
      client.out.println(keyboard.readLine());  ; e! J: v2 m9 n: w
     }catch(IOException e){  4 a/ ~5 A# C: O. \
      System.out.println("\n The talk is CLOSED !");  
( ~+ Y0 O2 u* {# c6 x1 x* ]      System.exit(1);  * o  ?7 p3 G6 g/ F$ ?$ e
    }  2 Y$ h# G- l6 F1 F  [" K' i+ a9 r
    }  9 i6 ]) O5 \2 ~0 `3 v# ]  I
    try{  
9 p& S( H  l/ i4 k# o/ ~3 z0 J      Thread.sleep(200);  
) |6 ~. T0 _9 ~/ ?    }catch(Exception e){  
: S2 V+ n2 U& i0 t      System.out.println("It is a bug !");  . v/ D, |  b8 O6 e$ m7 H
    }  
4 P0 i/ f# g- p0 `- O7 a' i  }  
7 w/ ~: f% I  h. e" ~3 U}  # Z$ l9 R) F8 z6 _# ^
class Client{  $ Y& e) O. V9 W4 b! y. P- t
  public DataInputStream in;  
- q8 J  H! [& V: ?  public PrintStream out;  ; G1 r6 R- p" w
  private Socket client;  - g# D) R5 D* c( [
  public Client(String host,int port){  : r" ^9 ]) y2 I
    try{  
6 @; f% C/ ]1 P7 X) V" u& z& z      client=new Socket(host,port);  ; V4 @! c$ X: K6 B- Q$ W1 s& k
      System.out.println("\n  0 ~% f9 e; P" t
***************************************************");  # h# e1 P  q" P5 v& k' q
      System.out.println("\n @(               Version 1.00 97/12/30 ");  
: G6 S. q; H4 X* A* y: \      System.out.println(" Copyright (c) 1997  3 y4 b/ E' Y. N& r
          (Lui DongBing) All Rights Reserved.");  
0 e) X2 D6 g! B& t3 a4 `      System.out.println("\n  & F6 y% a- T: B2 @4 a* |
**************************************************");  . l2 o0 n' h2 s7 |4 V5 k0 \4 L) g- \
      System.out.println("\n Client socket:"+client);  
) u  R# H7 a8 r! t$ W      System.out.println("\n Client is ready ! \n");  
4 @, {$ }  f# z" k9 L  y      out=new PrintStream(client.getOutputStream());  6 Y2 \* ]) s7 O. s8 {
      in=new DataInputStream(client.getInputStream());  
. t$ i3 z0 l: L     }catch(IOException e){  
  F% l: K2 b3 F% T8 Y% X; O0 y9 @% `) ~, R      System.out.println("\n IOException !\n"+e);  
* g% b+ W4 O2 D6 w* F      System.exit(1);  
$ C' ^( S2 Z. O) X2 Q$ J    }  
% W7 t, L4 _) v( G% M( v. R  }  
7 }  m" T- [' l0 V0 A% M9 z  V}
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-4-21 13:24 , Processed in 0.363464 second(s), 69 queries .

    回顶部