QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
5 s! Y9 r( g8 b6 l+ r* C" j$ Q! y1 z0 D0 s1 p3 p( W
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
, w2 x2 B  f0 U3 G4 G" L3 S9 R! {6 c, \* N
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  + q3 D: Z3 A. M+ I
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
; c$ C3 `" ]2 _3 u
1 d8 K, w( C& d! r5 c---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  ; G; |% p9 S" \2 b# r

; G$ r7 |) J% V: _+ L( y---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  4 W) E% G2 u5 E1 F# g
( I3 `) r" N) y5 C! {8 A1 n1 p4 x
---- 例 程 如 下:  
7 q* |2 |( k, V+ Q
) S8 J2 D" f# I      import java.applet.*;  
. h- b$ A5 k# C9 O  Q      import java.awt.*;  
1 S  p1 X! o. [- c' d. Q      import java.awt.event.*;  2 W, n3 ?0 V- r, g8 C* t& p/ k
   
1 \( m' @: ^5 I/ u4 ~0 S9 E, W3 C( Q; @$ V1 }& ~
      public class Example extends Applet implements  0 x8 c& p* M" A  }/ T
                       ActionListener{ //          public static void main(String[] args){  
1 m+ {3 H# o4 c4 B           Frame win=new Frame("Example");  
0 J. o0 W! U( q9 A* w8 b4 w/ ^) o9 c           Example example=new Example();  $ I. f! x+ h& O% c6 `' Q2 N9 d8 c
           win.add("enter", example);    a3 h. M0 |( V; U0 _! `
           example.init();             //            win.setSize(600,360);  0 Y; l$ K$ A% M3 P1 G
           win.setVisible(true);  1 |: N8 f5 V9 M& ]
         }  ) Q( Z, a3 B& w0 q5 ~8 n+ U% G
      public void init(){                        //            Button button;  6 ^+ f9 K; S% V' ]& W+ Z
           Label  label;  , @8 ?" N- \7 q1 q  n& E+ F
           button=new Button(" OK "):  
7 e, ]' ]0 i9 K           button.setBounds(280,200,100,20);  
4 ^% f& \; |4 ^' h- u) ]           button.addActionListener(this);  
% B( P# I" R1 M6 N           label=new Label();  7 [+ S; E! A& |9 M8 Q  R2 P
           label.setBounds(260,100,200,20);  
9 I& s. f2 S) m# C: X/ F3 t           add(button);  
* ~' I; j; m" f' d- d3 R3 M( o$ z           add(label);    L) |) k, U* G* F& f6 N* y
         }  1 V0 N; m3 ]3 R; a8 Q4 ^8 u; J
       public void actionPerformed(ActionEvent e){  
: ?3 |+ ~+ @# U" w7 H9 i+ T           Object source=e.getSource();    P+ W# L- b; @* W0 l4 E: \
           if(source==button){  7 @8 U, T' p5 I9 E! U7 K
             label.setText(" It is a example !");  % U3 J5 a: }7 a, A# X! a
           }  
1 u# S% b& G& M         }  
' d4 t; {1 C$ I$ A: r7 R! o- l5 s      }  
2 A7 n. x1 D5 @# M1 ^9 {# ~: j/ U0 L/ j) k3 o( M) t* R
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
) l7 i& P' T. {6 J, l# w& V( n4 q7 g$ q8 u8 H$ r! k' t9 F) k3 A
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
+ q# ]0 l! r7 h8 v1 Q2 n( z
% e/ T$ e4 b+ {6 s---- 2. Java 中 的 发 声 提 示  
$ ^$ w0 b. f8 O9 e* A
4 y6 u. r# |* e+ ]- O  i---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  7 e. Z! m6 t0 k
- A6 K) J! K8 D& q0 [
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
* h, d7 ~4 J$ h# X* }& a) ]
! A4 ~6 u3 ?0 R: S0 C: c       AudioClip audio;  ! I3 ?: b& R/ m, V$ d
         audio=getAudioClip(getCodeBase(),"Hi.au");  ) P% |. ~; `3 `$ X; `+ B1 G/ v, E+ o
         audio.play();  " X3 {6 y& D7 s3 o2 v* ?; x

& g, `0 X/ s9 U; X% G! h7 a! `---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
, R/ u8 z' V7 |' _- x5 L+ h够 被 调 用 的 。  ! J; @* L- G$ R3 G) K
$ V7 U. T/ |5 j. {' \# ?+ r9 U
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
7 Z* |1 R: j/ z  n- v1 y0 J( r) D; t; t, v6 A2 c- H
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  ' ^) D  f! q& L( N0 ~3 y
3 K9 t+ F& m- V/ m3 s; g, S
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  ' r+ K6 B& e" ]6 I; ?
, _1 T3 G0 [% L5 m
---- 程 序 如 下:  9 m7 @7 @6 X, u( w1 M" ^6 w. ^

* Y. E5 f3 Q; D) _# S4 b 服 务 器:  : m) n% P/ M+ Y- Q& A
import java.util.*;  
- d2 W# k" o6 W& `# c) S! f) mimport java.io.*;  , [0 n7 z" c7 k, i/ w; J
import java.net.*;  
8 p. P% M5 N& m7 fimport java.awt.*;  
  P' x0 ~# T* N# r- t  N: P7 M4 ~3 V0 c& W3 m; g- U# p
public class ServerT{  
' T" t; e4 O1 s' k  public static void main(String[] args){  
* r2 g5 @: s) f; o3 @/ A* k    Server server;  
5 Y: k/ G7 k, y* f    String clientRequest;  
6 t7 h3 G3 Z$ Z; |/ R5 @) Q: @    boolean quit=false;    S9 Z; |4 e+ T' Q* ?4 L$ t1 x: A; u
    server=new Server(8001);  
6 h8 B! k" I* x' Q, Y9 y    while(!quit){  
5 N7 b# Z$ P7 n# E3 t, @/ c      DataInputStream keyboard=new DataInputStream(System.in);  
4 [# ~- t, _! z/ O      try{  ' {/ t9 U( y2 z2 F) X
        clientRequest=server.in.readLine();  
% G  i2 {5 j" Y# k9 l0 c        if(clientRequest.trim().equals("CLOSE")){  : y+ ~3 }* o5 d) \: ?
          System.out.println("Client says: "+clientRequest);  
7 |9 x& d# A! h8 E, F8 Z          System.exit(1);  
; l* ^- o5 `) @& N        }  
# |' z% V7 ~, X& [        System.out.println("Client says: "+clientRequest);  
: a8 ^0 Y7 J; ^5 E* L, R  q. l        server.out.println(keyboard.readLine());  
) R8 u# s( T5 C" q' \5 J       }catch(IOException e){  5 c4 g- \' m4 \7 y9 Q  ~
        System.out.println("IOException in server.in.readLine()"+e);  
9 i' L5 R$ |0 f! \7 e: S+ ^5 q        System.exit(1);  + }. {9 b( f1 o/ ^" s
      }  
8 w1 ^. ]5 z" ~    }  7 [7 t! W' J' F$ r8 ?) D, U1 r; `
  }  
1 j9 o8 c9 P" ^: ?' c9 L* k}  
' c6 G* v( y2 o; [class Server{  
# I! `1 `3 g2 h9 O& Y& t" ~  private ServerSocket server;  $ o* u2 E9 s6 A6 Z& d& O  p1 W
  private Socket socket;  
3 g) p3 j1 j2 U3 C' H7 R+ p. g  public DataInputStream in;  : I( P3 I. t7 W2 R( E+ ]
  public PrintStream out;  
$ @2 P& \# ~' c: W  public Server(int port){  $ o+ d! h3 E7 o4 ?/ ~' {! R# e/ z
    try{  7 W6 U  \( Q9 H5 j# s3 y
      server=new ServerSocket(port);  , \6 s$ u5 \# |! }
      System.out.println("\n  
! t2 b. l' |( x*************************************************");  
  q3 h+ Y2 v2 T0 s2 n/ ~      System.out.println("\n @(              Version 1.00 97/12/30 ");  
$ `( t2 k) _! {% O; k' W      System.out.println(" Copyright (c) 1997  1 j: h; g# ?) j6 ~- h2 M
              (Lui DongBing) All Rights Reserved.");  : f& e7 t: s, t" A
      System.out.println("\n  8 m, r3 A: J# k- N1 c
***************************************************");  
4 U8 a+ B# E4 p  k" y      System.out.println("\n Server is: \n "+server);  
+ O3 _9 q3 m2 h      socket=server.accept();  1 d& [+ q1 ~$ L. P
      for(int i=0;I < 260;i++){    // 发 声 提 示  
, e% K* \1 k$ a( x; y2 T$ v! N7 K        Toolkit.getDefaultToolkit().beep();  ' t8 g, F4 U& c
      }  6 w$ e$ b! r" Z
      System.out.println("\n Server is ready ! \n");  , f5 K+ N8 d' M( p6 C2 e& @1 O
      in=new DataInputStream(socket.getInputStream());  ) b2 n, o0 [/ I$ g
      out=new PrintStream(socket.getOutputStream());  
" k( T. ?/ B9 X) o" [( U8 S      out.println("We connect in "+new Date());  ; u7 l  b1 l  n1 y
    }catch(IOException e){  
" O6 s2 H4 }4 F" E- V! m      System.out.println("Server is failied !");  6 r$ w/ ^: ~( C, _8 v
    }  
5 O' r/ H" k0 |" ?1 U: `  }  ( Z) X0 G2 ~8 q; e( R* o
}  
( o0 q8 _' X# ]: a+ |" [" }   
& y+ x/ j0 A5 d$ P! u0 T# ]
: ]1 L% C  j. U) f! a 客 户 机 :  9 ]0 K/ I3 {! X3 D: X
import java.util.*;  5 ?* o5 S* ]6 E6 q) `$ V
import java.io.*;  1 G& x* D3 E; k% @8 B- x4 ~. T
import java.net.*;  
2 x- Z* r5 @2 H% l; V' C5 ]( d: p
7 G; C) u; O4 Q6 @  Q1 Gpublic class ClientT{  8 N& h6 C& x7 o
  public static void main(String[] args){  
8 t* r; m6 n+ u! d0 w& e$ C1 ~    String welcome,response;  
* M& b. W( g1 Y    Client client;  . }& D0 s2 R  ~" ]
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  ; Y/ B" k: a' d- P$ s- E+ V
    boolean Bye=false;  
9 S# K" g" O) K  u% J    while(!Bye){  
  ^: k. a& x2 s3 l* z6 X, e    try{  1 F$ h. D) p& z! q' L
      welcome=client.in.readLine();  
: e; L: ^5 z  S5 |      System.out.println(" Server says: "+welcome);  
2 A  `9 S5 N2 k" o      client.out.println(keyboard.readLine());  & ?; T/ U' w/ \8 K4 z! ?. E: T0 N+ G3 ?
     }catch(IOException e){  8 q5 L1 P4 Y  G/ H. b
      System.out.println("\n The talk is CLOSED !");  
, X) v) F. S$ L( S4 u9 V# \      System.exit(1);  
* p- w8 B* R$ K! F: _2 r! B    }  
* V! C, W! m2 C/ v6 ?; J6 U    }  ( ]5 {# k9 A* \! Q
    try{  . [  K" ^- L: D+ S% `
      Thread.sleep(200);  
, z# r7 u  J# \2 D7 I( y/ U0 ~    }catch(Exception e){  ; `! t; i, T7 c% E1 W/ W* {
      System.out.println("It is a bug !");  5 O3 G5 N: S  f0 {; l9 W& i
    }  
) U" M2 Z' a. d' ^1 T9 }  }  
2 ?# o$ S/ j5 A}  - f' @4 k/ Z; Q! k# b$ K5 ~
class Client{  
3 H( J' `4 F" G  public DataInputStream in;  
) v, U' N6 r. E* n* V/ z  public PrintStream out;  8 V; x/ A3 S; p8 p5 N5 H# Y" E  d
  private Socket client;  - H4 r7 V, X& i
  public Client(String host,int port){  
$ I3 V0 s0 Q! R6 S* L* x# y    try{  
2 Q% m1 B$ ~) N! i* p      client=new Socket(host,port);  
6 N* a9 k+ j" O" j! E/ I      System.out.println("\n  0 g" v( E  ~' \
***************************************************");  : M& ^$ u$ ?: Z. v% |# e6 t1 i9 K
      System.out.println("\n @(               Version 1.00 97/12/30 ");  
1 x( L6 N: O7 h  O" c0 D      System.out.println(" Copyright (c) 1997  4 ]" ]2 P- L6 V3 _* l
          (Lui DongBing) All Rights Reserved.");  
$ P( r% N) i' K/ Y7 K. @, l      System.out.println("\n  
$ l! N6 k5 `" l8 ~**************************************************");  
3 t+ H: M& Y% _. b0 b% L) m& K; h6 X      System.out.println("\n Client socket:"+client);  
$ T3 k9 W3 f4 s      System.out.println("\n Client is ready ! \n");  
3 r, c1 Z- [6 r      out=new PrintStream(client.getOutputStream());  9 q$ g, y! E% N6 i0 u
      in=new DataInputStream(client.getInputStream());  3 [6 @* S! u4 b, x5 ~6 T. R# D% S
     }catch(IOException e){  
  b" L% A& l1 a- V4 Z4 Z6 V      System.out.println("\n IOException !\n"+e);  " A+ E' ]  u- Z  y. z0 x
      System.exit(1);  0 h% a/ o+ b- X' ^+ Y
    }  1 M9 ^; e6 C6 X. s6 B
  }  : D; y! A3 Y7 M* c" t. K1 q) ~/ d
}
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

    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-31 20:57 , Processed in 0.164261 second(s), 70 queries .

    回顶部