QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
; ^) z+ ], x7 R. Y) x
8 W* S. R. L+ G2 s$ z5 `, e/ j' N---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
- \  Z9 A6 t" O- f
& S4 v' \, S" }5 ~+ N" B- b$ m---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  ' J7 ?% x0 u" }% d2 t
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  & @+ I* Y" c+ B( o& u6 r) r; j

6 ^/ R/ [2 B& C" h% N---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
9 f- h( K/ ^4 D- `
6 j  o; d. M, N/ Y---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  - }7 \3 V9 T0 W

5 v7 G8 y# ?4 A1 \( F1 ~& ]---- 例 程 如 下:  
8 I' _+ O) j% a3 G- M* k& P% j4 C) U& R; w' g& [
      import java.applet.*;  
; U6 i/ [- [* Q' v7 W. K      import java.awt.*;  , Z! p5 p1 y* t' H, E& B. t
      import java.awt.event.*;  
; x) s5 O1 J' m# d& J) a% P     s/ ]- |+ n& n0 Y# @5 |
, _6 Y; b+ N% Y8 L
      public class Example extends Applet implements  , w* \5 s$ z+ E- z0 H( n
                       ActionListener{ //          public static void main(String[] args){  $ ~+ k. S1 d$ q
           Frame win=new Frame("Example");  3 E: a- M2 `" O5 {3 f! d5 |/ |
           Example example=new Example();  
2 ]; S# q; y+ |; L3 l* |0 |$ K           win.add("enter", example);  - J: O0 I' g6 ^( f; H' I: c
           example.init();             //            win.setSize(600,360);  
+ o9 k  l, {7 g6 P           win.setVisible(true);    k" T% L6 t% @5 I) N2 i
         }  
8 f4 S7 @  G7 a( y9 ~% H/ l. N# s      public void init(){                        //            Button button;  , [5 a% Y+ X; t4 E$ c6 @
           Label  label;  
, d+ @- Y3 Z4 X4 ?           button=new Button(" OK "):  , V, R4 {3 _: m- H9 Y, k
           button.setBounds(280,200,100,20);  ' S- g( ?/ m  C: e( o8 K
           button.addActionListener(this);  
6 F4 h) J/ x# |* U0 d           label=new Label();  & G8 s* i/ T2 }5 F1 z0 T* p1 P
           label.setBounds(260,100,200,20);  
3 u, i5 s, _' j           add(button);  
6 I6 w/ P$ {% Z5 _- Y           add(label);  6 H& |( U' S; U
         }  
5 ~( z3 e! h2 o- J3 `       public void actionPerformed(ActionEvent e){  
# m1 m4 w* c- y4 c1 u) K           Object source=e.getSource();  
. W1 j3 C% J* \0 s           if(source==button){  
4 \0 J6 w$ `" ^6 O: \, d2 |( K3 q             label.setText(" It is a example !");  
# N& t- S2 z7 l: g& k# h. @           }  ' I6 b) n4 }0 y! o
         }  $ c% j+ M4 @9 B- |+ n" w
      }  
( H7 T. j4 u2 Q6 w  _
! G! ]$ R& C, M! }. ?  P---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  2 L0 Z$ C7 @( O# a4 p
7 r  L7 d# Q( E% Q: N, E
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  ( \0 V4 l" }. j- {- |# ?. m0 }9 o
. e+ `3 L8 z; U3 O) D% }
---- 2. Java 中 的 发 声 提 示  
% C4 T) J( l8 |4 n- M) U' A" x& u( [) e9 b0 P
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  & J- G6 _  K6 e

! s: G" }( O, f( o0 V: e---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
+ `, [* k. E1 ^8 q: [0 |0 q8 p: v4 Z( p- \2 M7 o: S  [( j7 f# _8 {
       AudioClip audio;  ) r) i% @5 Z2 `$ [! V5 S0 k" S
         audio=getAudioClip(getCodeBase(),"Hi.au");  , C, a% O3 Q- m6 a8 ^+ ]  Z
         audio.play();  7 s" `+ |. w1 \% S0 g

4 o0 G9 N' {7 E# ~9 B---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
& g% L+ P' g$ @5 k够 被 调 用 的 。  
/ W, T" Q# s7 F3 q' ?2 x$ K& a# g5 L. |* B
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
% @+ x) T8 m- q- X( [: ]& \
& O# D7 {3 F: J4 h) Z---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
7 [6 C* w' R7 I0 m3 N
( [# r0 P$ Z) \8 Q6 ]7 B---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  , @1 v, M. L! C7 d" M
: Z6 o9 t% a+ A% D- h. |' u1 V
---- 程 序 如 下:  
2 L, W: Q0 D0 f- X: }/ c7 j- t, l) ~  _
服 务 器:    P; J* E) T4 ?
import java.util.*;  0 \, c5 X* \# S) Q6 C6 o
import java.io.*;  
( E7 m9 c9 S# w4 `; d0 o8 Bimport java.net.*;  
% G2 ~# r, M3 H0 {! z& dimport java.awt.*;  ' R  K0 F9 o9 n% X5 l

0 ?. _0 u1 d  {" r% L% bpublic class ServerT{  
0 W7 j& g  B+ P9 e* h" G4 r  public static void main(String[] args){  / [! A; O* a1 q, k0 k' |
    Server server;  4 L# h  j! G0 K$ e+ f
    String clientRequest;  + L: z# v* T: D
    boolean quit=false;  5 p' c8 y: D% s3 L" A( O0 Z' r" ^
    server=new Server(8001);  % T/ M) u' ^* U) H
    while(!quit){  1 H# X$ j( C+ `* S
      DataInputStream keyboard=new DataInputStream(System.in);  
9 `& u! z( O) I' p  i! x      try{  ' R: o9 j* @+ T! F$ l( }+ b7 b
        clientRequest=server.in.readLine();  
  J/ s% ?3 w; s5 X$ E# |$ _* o        if(clientRequest.trim().equals("CLOSE")){  
2 h) \. L2 m9 @. Z+ c          System.out.println("Client says: "+clientRequest);  
9 C' R" w6 z! g" Q          System.exit(1);    G1 c( [7 k1 M) u$ i4 q) X0 i
        }  
" n1 `/ d3 `; r$ ^        System.out.println("Client says: "+clientRequest);  / y* n6 T) \% c& D. u6 ?" }3 f
        server.out.println(keyboard.readLine());  % ^8 Z' Y- S+ H, {* r7 z4 M( l
       }catch(IOException e){  
+ x( ^! I( b$ j6 c        System.out.println("IOException in server.in.readLine()"+e);  
! m) k$ b) X, [8 w        System.exit(1);  ! F) \- x8 `" O" |- N+ e8 }2 t" w
      }  
: O  x' d* H' y6 L! m" E, H    }  
) D: S0 |! y1 N( B9 G6 N  }  . s1 C/ \" k' R4 I4 p
}  
4 S# \, G* A- a0 e) `class Server{  + T- w# u; F( P2 U8 T; ]( M0 }
  private ServerSocket server;  / d8 ]6 B" L7 [) q) i4 Y' b
  private Socket socket;  
6 k6 H4 S- D1 x0 g1 C" T  public DataInputStream in;  
0 t- {) p3 ~1 @& w1 K  public PrintStream out;  1 g- w9 e( ~3 u; _& X# O
  public Server(int port){  % W8 u# \# S3 N9 E
    try{  & ~8 H" L9 m- X6 y& z: O
      server=new ServerSocket(port);  / a8 B) Y  O. H7 h+ b( G# [
      System.out.println("\n  ( U' f/ i& F# o  U6 }" x0 L3 W
*************************************************");  
: G9 v- a- ]+ V! L$ @# n/ e      System.out.println("\n @(              Version 1.00 97/12/30 ");  
6 I& f  U0 l7 X7 ^6 x3 r. ^3 M) |      System.out.println(" Copyright (c) 1997  1 v) p1 o& M. b( ^, N
              (Lui DongBing) All Rights Reserved.");  
) N$ Q: d9 `5 k      System.out.println("\n  8 ~* r+ A) a, K7 [* @3 s1 e- E# A
***************************************************");  7 z& s; @& X# X. @( Z3 @4 f
      System.out.println("\n Server is: \n "+server);  
  D# G; O8 r% b# P1 {0 C      socket=server.accept();  0 `" L/ {, i; C; V$ \5 |9 B
      for(int i=0;I < 260;i++){    // 发 声 提 示  8 F" i- p! w6 R; l' {
        Toolkit.getDefaultToolkit().beep();  8 |4 t% X; _+ K+ r
      }  $ M( y" f6 X, Q7 ~
      System.out.println("\n Server is ready ! \n");  
* D: A1 B* N+ G/ b: v7 H      in=new DataInputStream(socket.getInputStream());  
4 S- l5 Q& n* I3 S5 |& r      out=new PrintStream(socket.getOutputStream());  ; f/ R- `/ ?6 l$ o
      out.println("We connect in "+new Date());  
: {: i% P) }- y$ D/ X! j2 k: x" O, T    }catch(IOException e){  8 Y& }5 @5 r' O8 p
      System.out.println("Server is failied !");  * j" L: T( i5 m8 c
    }  0 g* e3 y7 M& c4 e3 j8 |, Y- e& t
  }  8 b0 d0 ^7 C5 b# _6 J
}  + E3 C9 E  m! {2 c4 x
   ( U7 `" V5 n$ I0 Y' ~$ i+ H

3 y4 S! P* _4 e( @, v 客 户 机 :  . @4 V; w: r0 u1 v
import java.util.*;  6 C9 K0 t) _. X. W$ B! p& U  E. k: m4 [
import java.io.*;  
9 U1 D+ o' O" b; o7 M* r6 qimport java.net.*;  7 P% s$ ]" @  a. z! \- ]

5 a! c# D8 g: K3 Z6 X- Jpublic class ClientT{  $ ^  |% j9 k: @( a
  public static void main(String[] args){  : K- T( \( M+ X4 D% }5 B
    String welcome,response;  2 Y: F: v# D8 ?/ x
    Client client;  ( `7 c' c* X2 n9 O" m( P
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
6 k4 o$ M( Y' J: j8 J9 x    boolean Bye=false;  
$ p3 W# ^8 }# f4 u' L* h( P( T    while(!Bye){  
; b) M& w# l3 W4 G* m    try{  " Q4 p) |( ]; @0 C- d4 E
      welcome=client.in.readLine();  
) Z' Y+ i, E$ v* l      System.out.println(" Server says: "+welcome);  8 `7 v" f% A( L5 P2 Y7 o, V9 \* a
      client.out.println(keyboard.readLine());  # F' H: m3 n5 d
     }catch(IOException e){  & m" @+ u8 c3 i+ p
      System.out.println("\n The talk is CLOSED !");  
* c* K. P# k" i/ t  j8 h      System.exit(1);  2 l0 ~5 V8 [" W: g: H$ I2 D
    }  
' Q5 n! D0 b1 A1 }7 k    }  
# b5 u/ |, V$ Q    try{  
6 w6 r# H: F( S# P4 ^8 Z4 J      Thread.sleep(200);  
7 D0 L5 @8 R+ ]    }catch(Exception e){  3 H/ w3 i" G0 f  s2 I
      System.out.println("It is a bug !");  - T$ i# S- R  z6 u& s0 O
    }  8 f8 A3 I4 T4 D/ e% R
  }  
8 \, Z$ S- g9 T/ D, w2 w1 c0 d}  6 J: q5 N; Q6 C, `' Q
class Client{  
, _& L  E! Y/ ^2 M* f% [& ?- C  public DataInputStream in;  
. Q! G) E! u" o  public PrintStream out;  
$ z+ W% W' y/ G  private Socket client;  
6 X8 p  A. }* q3 }5 h9 w# N  public Client(String host,int port){    h/ s, h" ^9 p* p+ ?
    try{  
; i; R2 s: w1 }" H      client=new Socket(host,port);  1 o, D( G# R3 h' C" _% y
      System.out.println("\n  : n/ n# M. F! D9 R4 n% O* ]
***************************************************");  
* _# s. r* c4 M% s0 U. g6 O& u      System.out.println("\n @(               Version 1.00 97/12/30 ");  1 J8 |- ^9 O4 X
      System.out.println(" Copyright (c) 1997  
) ]' t4 h( X8 C8 g" R          (Lui DongBing) All Rights Reserved.");  9 x/ ?$ K* {0 g
      System.out.println("\n  
2 Y* q/ s/ z1 C$ i  S**************************************************");  , S; i5 n$ b3 K, h9 @1 v6 T
      System.out.println("\n Client socket:"+client);  
$ I5 k" `  w+ J6 _# ~      System.out.println("\n Client is ready ! \n");  ! K7 D. f% @" L. u+ s, e* C
      out=new PrintStream(client.getOutputStream());  
' a3 Y, {/ R! ^5 U% C      in=new DataInputStream(client.getInputStream());  # R& j+ S' X- C9 W. }
     }catch(IOException e){  
3 p; o8 r$ g( r( v% c' B; O9 \      System.out.println("\n IOException !\n"+e);  6 v, ^6 @9 p. ~- S& W: C
      System.exit(1);  
. i: h% y4 ~* B* l/ f& a    }  , L/ E$ d' H% J
  }  - }& b( a! J+ M8 ]5 }9 i8 h! C
}
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-27 01:15 , Processed in 0.929540 second(s), 70 queries .

    回顶部