QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  # L3 W$ y* J# q- \# p
+ W. A2 X  s2 t
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  9 M: y0 e* Z7 R

! {1 z$ a1 B' d+ L---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
8 b# V% _& f% l! O1 E! x9 ZApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  1 j4 ~: z1 P+ j! ]/ h
0 Q) R" Z  Q5 m% c# R9 r  ~
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
) O- J; X. g4 T- K' o* |2 ~! y& r$ M3 j3 u. v6 A( F: J: y
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  ' \, g7 J5 e7 Y8 {2 ~0 T& y' C
9 a3 J/ F$ c0 P, h( L8 r% O0 w
---- 例 程 如 下:  0 W& C& I* W& w. M
& u' x7 d! Y' E3 h2 w& _8 g7 ]
      import java.applet.*;  
2 ?. E; w1 b/ q$ U      import java.awt.*;  
2 \8 @( R8 N6 L. l3 S! X3 l: o0 W      import java.awt.event.*;  6 Y0 m* {0 h+ a5 r! k8 P
   
0 a. K. `; d! |3 |5 h8 j
5 U& j" P) |* O. [4 h! @$ B      public class Example extends Applet implements  - _+ a3 ]# N6 e, [( F
                       ActionListener{ //          public static void main(String[] args){  8 n& P. D  f! w. M" r0 V0 Z
           Frame win=new Frame("Example");  
9 y9 P+ A4 e; @. S; N           Example example=new Example();  
0 {* ~, ]( K/ a( T' X6 W% P1 t' V- Q           win.add("enter", example);  5 }. ?, H. m0 K, r
           example.init();             //            win.setSize(600,360);  5 s0 i" z9 i" Z; }( X- l
           win.setVisible(true);  ( x# x# H1 ~( s  D3 ^* w9 C
         }  
1 U5 K) H8 L7 E6 W0 ]% J! J      public void init(){                        //            Button button;  
% y/ m; B9 {3 }1 E           Label  label;  
$ ~- `4 y& i- a+ M! _- v) O' v" d+ `           button=new Button(" OK "):  , L9 k" }, Y9 X# q4 C
           button.setBounds(280,200,100,20);  1 g9 B/ i4 a' l4 t$ M
           button.addActionListener(this);  
; N1 P5 _4 A; u% S& x8 c% Y           label=new Label();  . P) U1 ^! R5 }+ K1 E( e3 G
           label.setBounds(260,100,200,20);  . c+ H+ \) l( r5 e7 C& B
           add(button);  
- ?4 C1 c' J; W) \! z           add(label);  
2 |' I6 {$ \! @* x# m1 F! Q. n1 [         }  
0 j* K/ U# z7 \! Z6 Z; x       public void actionPerformed(ActionEvent e){  
. R2 E1 ?9 r" ]( k9 C           Object source=e.getSource();  
! e9 u! q; k3 z! T           if(source==button){  + ]1 U' ]- |6 x2 T9 I: `! o% ?9 k) P; f
             label.setText(" It is a example !");  
6 e1 \0 M' E3 |           }  , Z2 A! \/ j! j8 [" M- U+ S; h. R1 E
         }  
. {. S& t- ?) ^" m* d      }  , r9 m: A! u" T- `2 j: r
+ z7 e% P8 _; M, o2 A& S
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
3 j, \8 k6 u% t
2 e3 B; O  n7 q: m$ G( b---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  , ?3 n& a0 U3 @

1 Y! `4 F6 [+ F  i' a5 D* H* x$ G---- 2. Java 中 的 发 声 提 示  
3 k0 l; o6 y  ^) L4 Y) U# z% [( A- _9 ]% l( J. U6 K: d' Z! j
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
6 ^! L5 t+ e! J5 C  b7 t* W& r$ X# j/ ]( p
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  2 Y) G0 ~, i9 s

' \6 _; V5 \9 ?       AudioClip audio;  
* a$ g  Y6 ~$ }: g         audio=getAudioClip(getCodeBase(),"Hi.au");  $ @! _1 ?7 E: U2 m# E( V- T. r
         audio.play();  2 k% q# {# y& w

( \; L9 ~# E, v0 ^- d---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  4 ^0 P# V2 p& O
够 被 调 用 的 。  $ z& n, R, N( V0 _# j

% C0 F: U. K$ `---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
3 c9 J+ b8 @# A4 }8 Y: D+ n! J4 R3 m0 Z) [
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  $ X) J+ m0 G! W5 H) U! y; [

8 [: C. b  }  c; X. m& c" R' ]# O- B$ u---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
- ]' f: m2 D1 N0 R
5 ^% p- U- U- M& ]---- 程 序 如 下:  2 Y  l$ `& t7 [+ h7 w
+ O7 U- F/ M) a
服 务 器:  
5 q$ w7 |! |8 b2 ~7 t# Z1 M$ X5 X% rimport java.util.*;  9 V3 b0 I% |4 b- I! t
import java.io.*;  
5 H' Y, A5 E. \. q" a- z, e' vimport java.net.*;  
9 E' a! H2 y4 r7 x$ f$ Yimport java.awt.*;  , l6 Q$ {, a6 f7 O+ M, v. C4 S# P

# c! t( O6 v8 e0 A- npublic class ServerT{  
0 G% J; |- X6 [5 V' S3 v- f  public static void main(String[] args){  0 j" A/ y: |( P# d
    Server server;  
  X* R3 h# G/ ~3 T8 t5 l    String clientRequest;  
7 f/ a  N  O- e2 x' ^* w$ z( o    boolean quit=false;  - b" ~6 Q* d2 c
    server=new Server(8001);  7 i$ h# d/ P0 z$ q) |$ a
    while(!quit){  4 z) P  y6 y* y! F: [+ W
      DataInputStream keyboard=new DataInputStream(System.in);  & G0 ]  i; ?* W
      try{  
# z: b& x. \3 o+ }( H% j1 W        clientRequest=server.in.readLine();  3 ^3 d) a, @! {
        if(clientRequest.trim().equals("CLOSE")){  / p: |5 |4 S1 X9 H7 E2 s
          System.out.println("Client says: "+clientRequest);  ! B/ W0 j8 S  I, H6 y
          System.exit(1);  
! d; ?  P7 V' V+ p; e9 |2 Y. F/ `        }  1 Z: y3 o$ ?/ M; k; x" S; c8 c
        System.out.println("Client says: "+clientRequest);  ' E) r8 V' N2 n
        server.out.println(keyboard.readLine());  
$ p/ f% r: w7 R  D       }catch(IOException e){  
- h/ p' @& G) _% S! c, }        System.out.println("IOException in server.in.readLine()"+e);  
5 G, \/ m% H7 c& r( a        System.exit(1);  
2 J- V0 v3 W( d4 f- E# ?. Q; g      }  
' }, y4 `0 \9 N. ?- ~+ f! v    }  2 R4 ]9 \" S6 H0 @) X# [  `
  }  
* ~( |& H) r: c+ A}  
0 p. J# `' g6 ]+ A) n5 i; wclass Server{  
) ~# i- y: A/ m$ K  @- R" C  private ServerSocket server;  - \* F4 ~  t, t) H' [" s
  private Socket socket;  
) `9 U* e9 E+ K3 l8 N: j, C9 w& V  public DataInputStream in;  , Y6 t9 ~& m( d, s
  public PrintStream out;  
' R4 I1 q) k1 n  y' U  public Server(int port){  
' u/ K$ B" @, p6 n) B, R7 ]    try{  - R% _/ v3 j* [& e: u& z3 f
      server=new ServerSocket(port);  
  i7 F- N; v# m3 N/ c( f! d6 Q      System.out.println("\n  4 k8 r& i4 h: \) `4 W# L1 ]6 {
*************************************************");  8 a; O9 q8 F! {* @, H% v5 O
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
1 o5 V9 u  R' Y$ `( _2 n      System.out.println(" Copyright (c) 1997  % P% d* X* }( Y3 f$ G. O/ n! e
              (Lui DongBing) All Rights Reserved.");  1 H4 D3 w0 u0 \. H& q
      System.out.println("\n  
% i2 o4 i3 e) O) V3 z7 k+ _9 w***************************************************");  9 Q0 Q5 u/ R* k% K9 I
      System.out.println("\n Server is: \n "+server);  8 z% q& b9 f8 B( n2 ^. r1 K) Y8 w
      socket=server.accept();  
: ^0 m/ l( [! \      for(int i=0;I < 260;i++){    // 发 声 提 示  " I5 G9 A$ L7 p' ^( ?- M1 D- {
        Toolkit.getDefaultToolkit().beep();  # F2 I7 g4 u$ M3 B
      }  $ h% C8 g9 n- \1 X: b
      System.out.println("\n Server is ready ! \n");    U8 c# {$ P, \! }0 N% l
      in=new DataInputStream(socket.getInputStream());  
; O$ ^( S3 g; K+ F; P      out=new PrintStream(socket.getOutputStream());  3 l* i* I7 M3 N' ~3 \- n$ W
      out.println("We connect in "+new Date());  . U5 R9 @7 L/ y3 e5 {0 y# O
    }catch(IOException e){  
- f- [& a, B+ d      System.out.println("Server is failied !");  1 d  T  X% `, g& Z2 }! ]
    }  
; R, [  M- H! N6 ^* F+ w, ~) Z  }  
& l% n  d, y2 f$ z5 d3 \% [}  
- w0 g3 v+ X. n1 W6 g2 d6 Q   
: l- Z$ D- U, M8 O8 E' v: V  W7 o: r! C
客 户 机 :  
( V: w; O- {1 ?import java.util.*;  
' C6 T. ?  m& P+ `2 \; iimport java.io.*;  7 Q- J- s/ M7 i( S9 F5 a
import java.net.*;  & r: x1 U# Y; [& E4 B

; s) H! E( r  r/ @6 L+ Xpublic class ClientT{  
  D/ v7 Z  J: g0 q( D  public static void main(String[] args){  ) w! A* Z2 A) Z- A: ^
    String welcome,response;  
% e; ?; p. l/ D& s( \6 E( J/ p    Client client;  
, U2 q9 l& S3 P' F) M; j2 H    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  % k9 D- n9 k7 O
    boolean Bye=false;  
# G* G6 b9 i/ i4 |( M4 i    while(!Bye){  
2 N0 b+ G* o6 z' w! a" ?: ~+ |    try{  
& i) \. W& I5 Q" o. O4 ]3 t- F, x      welcome=client.in.readLine();  ; J; D; r. {/ D
      System.out.println(" Server says: "+welcome);  % d% Y" g+ a3 _0 ^' R8 }% C
      client.out.println(keyboard.readLine());  
, c- ~+ e  }- t. j  N' o/ q( z) T     }catch(IOException e){  
8 I: _% ]! G) f  C; f( Y      System.out.println("\n The talk is CLOSED !");  + Q0 f; X- I# c! `# Q; q: T  F3 w
      System.exit(1);  : E2 i( ?  e6 ~* H$ i0 H
    }  - |8 Q% M' K7 X3 ?
    }  . [# y: M6 t( a/ y4 e( W2 L8 z
    try{  
4 D& n% B# {: Y* ]8 D/ u      Thread.sleep(200);  " f' O1 y/ v6 ]8 T
    }catch(Exception e){  
$ R8 ?! U0 K7 i5 R$ u  j      System.out.println("It is a bug !");  
/ }+ \/ @' E$ }! O7 ^    }  5 u  G8 P$ K5 x
  }  : R& ^6 f1 A7 l% H
}  - {% n/ v. n6 Y; [5 s7 ?" B' a
class Client{  7 a$ @9 F+ ^9 Q  B! u/ Y+ h# c' ?
  public DataInputStream in;  
( k5 ]) J, w0 T" j  public PrintStream out;  % z/ h+ o5 ?( r0 Z
  private Socket client;  
: j. U! P1 c9 X; }' C* T, M7 N  public Client(String host,int port){  1 c: N0 R$ `: b! R
    try{  & T. w+ A- {) ?; G- }
      client=new Socket(host,port);  ) R" O" g9 @, L+ C
      System.out.println("\n  
( Y: U. U+ e, \. ?1 [' t***************************************************");  
6 ^1 n4 ^, p" ]4 r' P; \& n9 [      System.out.println("\n @(               Version 1.00 97/12/30 ");  
5 f! `, |  E. F/ x' `) w! [" c% K+ F      System.out.println(" Copyright (c) 1997  2 K8 k7 S: m$ i
          (Lui DongBing) All Rights Reserved.");  # T9 P2 k0 i4 ?$ D9 U% Q6 K
      System.out.println("\n    s5 m2 X) D$ n7 u
**************************************************");  
5 K# z7 e" _1 X1 d  Y      System.out.println("\n Client socket:"+client);  # Q/ s* t% f& K0 X; @
      System.out.println("\n Client is ready ! \n");  
6 ?) q  K& M0 S( G# r      out=new PrintStream(client.getOutputStream());  
& @) d) z; a, p( L/ \      in=new DataInputStream(client.getInputStream());  / T" D) [" v  I$ D$ t
     }catch(IOException e){  - N0 M/ Y" x- }% g' F9 D0 a
      System.out.println("\n IOException !\n"+e);  
/ C, T/ y- P. j      System.exit(1);  
, I% b, M0 ~" r* e0 E9 p: Q    }  2 X0 d; @  J) V
  }  
2 j1 i3 o2 _1 [- h; m% E( F7 t}
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-10 23:20 , Processed in 0.432011 second(s), 69 queries .

    回顶部