QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
/ m, }5 @6 L3 [, R9 Q
+ t- R& i, [: p6 D3 Y: M: p---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
8 i% r* Q, x& ~; _9 Q
' F, k* Z- T: |& Y' h: M# ]---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  $ x+ K* r, c* o
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  9 ?6 W% W1 [  ?, ~/ l8 L6 s0 \

# t. ~9 A2 s- B- ~+ E4 z---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  ( o5 p+ P: U+ y& O

' I4 r7 S3 h6 b' C! C6 H; e---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  0 b! Z+ K' U' x; c9 v
- i8 B3 I7 d  E( t5 a% T) i
---- 例 程 如 下:  8 K2 a/ `3 j% K
" a  s0 C) _2 f, E8 R! b
      import java.applet.*;  ) E0 s- X, b; m/ d% W0 i) ~
      import java.awt.*;  6 z/ d1 b, p) s. p
      import java.awt.event.*;  ' e5 t) r: F4 t1 U
   
, E3 g  j9 y9 V* T' @; X$ n* N9 d- ^- F9 i/ K
      public class Example extends Applet implements  
$ W" S: d6 ]+ O. T, h4 l                       ActionListener{ //          public static void main(String[] args){  
) d0 f! v4 H8 ^/ @           Frame win=new Frame("Example");  + K" `% l  y$ P
           Example example=new Example();  
, U, f9 H6 }1 c- x6 A! C           win.add("enter", example);  
( Z; v) ~' H. |, ~3 w5 B6 y8 \           example.init();             //            win.setSize(600,360);  2 Q4 s% f' K. W& N9 l
           win.setVisible(true);  
/ U( y3 a/ R* f8 _         }  
8 B% C( |: a0 l: S! Y7 G6 `      public void init(){                        //            Button button;  
/ G9 n- |4 n% }  p9 T           Label  label;  . l# E6 Y0 d8 @! Q! y! C
           button=new Button(" OK "):  * Q% F- x7 y5 k
           button.setBounds(280,200,100,20);  
6 ~9 A# }  C7 j+ A9 `; e7 ?' t# o           button.addActionListener(this);  
# N$ I0 i6 H0 U2 S* J           label=new Label();  
) B2 M# U/ [" U  K: A$ z           label.setBounds(260,100,200,20);  # |* a$ m5 G- ~2 t3 ^
           add(button);  & b4 a, e! ]; |% _5 d, t! K7 @0 H
           add(label);  
$ l* v" ?  u: i  u, D: R9 u         }  
4 V0 e7 N. x7 A2 j2 U# [# p" E       public void actionPerformed(ActionEvent e){  3 ]- J5 e, i9 G" D
           Object source=e.getSource();  
/ t7 g. \0 `. o: K& p6 D2 T* a           if(source==button){  
9 q3 N) f8 E* x) r  @: @             label.setText(" It is a example !");  
0 O2 R$ S7 E4 j) o/ e* a/ j  s7 P           }  8 u% `1 |8 z9 J  Y
         }  
, y9 |8 j' ]) H  R% I      }  2 y% D4 H3 }! k# p' ~+ D
0 V1 q: V, W$ A: r) Y, P
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  ) A" }0 k" [' N. I0 R) W' E4 h3 Q

* y4 G) l6 Q4 Y* [4 K---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
! U4 _4 C; _2 h
4 \- |* t+ k3 p5 I---- 2. Java 中 的 发 声 提 示    i& T& u4 u5 X. {* S, D+ N
, d4 \! t9 a. o, _
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  * I8 A, Q$ T7 e8 q) X# \9 g( t
+ U# ~; Y; _; t' z; S
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  6 l' l# v7 s. e2 W. w

$ a/ R* u0 g- [0 ?       AudioClip audio;  
0 J# S9 c; S0 a         audio=getAudioClip(getCodeBase(),"Hi.au");  " U2 U6 E- k& J; L/ N0 a3 O
         audio.play();  
5 Y8 C" D3 u% q. b- [7 ?5 U5 S7 q4 [) X' o$ F! y4 O
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  $ l- X: B% g5 _9 j7 d7 A1 Z
够 被 调 用 的 。  
' G( K0 g- Z$ o9 H
  a9 K, U) g0 r---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  2 }5 l8 p" g7 |. N
$ }4 Q4 j# j4 R
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  ! `3 s/ C9 l: g* ?( H( q3 H) w, Z

6 I5 `" G/ U) O; @1 g1 D" V8 D---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
1 O9 Z. ^9 K" ]/ x$ ]0 N& b2 [& N
---- 程 序 如 下:  
% g9 u- g# ^/ Z9 L8 E0 p  L$ L# b5 L2 C* x! _6 c+ X5 w
服 务 器:  
0 I; B( K. X( z* Iimport java.util.*;  " }$ I2 m5 C* o% p9 G: \9 z/ g. d
import java.io.*;  
% M+ N' @# b$ h9 G# @, k% n( timport java.net.*;  # `0 Y2 T  n7 H; _( u# r
import java.awt.*;  
8 J" O2 L' d4 |  r* K( l2 P0 S' A: j1 N/ w. u  f* j0 b
public class ServerT{  9 Y4 a+ F! P- z
  public static void main(String[] args){  
  \# [" j+ p! u- O/ m5 H    Server server;  
) z1 }( g( a/ A& }8 X) ?  ~    String clientRequest;  & j& D! G9 L. ~" x) E4 c, ]
    boolean quit=false;  % {9 E2 |! _2 z
    server=new Server(8001);  
+ A% k" e' [3 \* Y! [4 `2 K    while(!quit){  
# W, H# R4 b6 A- P3 |& @3 j' ^. n      DataInputStream keyboard=new DataInputStream(System.in);  ; I6 A8 K# J* H2 A- s, d" W, e1 X% E
      try{  5 d# e2 b8 @6 g3 R2 _( Y- m& @
        clientRequest=server.in.readLine();  
4 ?7 i5 |# T  k9 {) ^        if(clientRequest.trim().equals("CLOSE")){  
  V( M. R: U# e( y: p/ Y% @# y. x          System.out.println("Client says: "+clientRequest);  
2 d- |1 w. o/ d- t! ]! [8 n          System.exit(1);  
5 g  L5 u2 N# O) i, T' z% g: M6 E        }  ) A$ q  R! s0 Y# x# {" \8 Q5 w, ]
        System.out.println("Client says: "+clientRequest);  : U# {% |/ V; l, s8 o* G3 g$ |
        server.out.println(keyboard.readLine());  : D. b5 d) p! p; v8 E1 V
       }catch(IOException e){  * p; n  Y- M1 o- L
        System.out.println("IOException in server.in.readLine()"+e);  ; c6 y* g4 L  r! W/ j
        System.exit(1);  
+ S- D( q6 ^2 Y4 X3 k; q9 o4 ]      }  ) `* A% d* J% u4 A+ Y/ y# l8 [
    }  1 k# z) j, j& P$ Q2 Y, _
  }  9 f% `1 ?2 x4 w( `9 R# O0 _
}  - v2 T2 |) E: N; {0 s5 b4 T: s$ K
class Server{  
9 c/ O& H: b. k3 E7 }* Y1 \! m0 C9 x  private ServerSocket server;  0 [; K2 o5 s' M  x* [
  private Socket socket;  ' L# ?5 c8 o- R" b4 [: m
  public DataInputStream in;  5 v7 K, L1 R7 \, Z5 b
  public PrintStream out;  
' n8 h( q/ B" `- N& Y" o( [& C! Z" Z  public Server(int port){  9 z# n9 K, c- T; {8 B
    try{  
& _6 ^! b) {) l8 O6 L6 B      server=new ServerSocket(port);  
7 Q, @: F: r1 d) @      System.out.println("\n  1 r* e) Z; o2 R+ @" B
*************************************************");  / v, ]0 {& {" [% [4 d+ J# S
      System.out.println("\n @(              Version 1.00 97/12/30 ");  , J- E5 d7 q0 H. E
      System.out.println(" Copyright (c) 1997  % I0 E# A* o# l* m3 Q( y
              (Lui DongBing) All Rights Reserved.");  
- H  g0 S, ^( _0 J3 U* j- |% c      System.out.println("\n  * ~0 v& o% q& `! E3 t' p
***************************************************");  ! m1 k0 x) c  H1 G: ~" I
      System.out.println("\n Server is: \n "+server);  
& p- q3 j+ g2 K. H# _      socket=server.accept();  
6 F2 B* v- ?- {9 [! e3 o      for(int i=0;I < 260;i++){    // 发 声 提 示  $ K5 [2 V. l; w$ u
        Toolkit.getDefaultToolkit().beep();  
2 t5 o' q" b8 w, {      }  4 }! x. y: @' E3 e* i: `5 b
      System.out.println("\n Server is ready ! \n");  4 y4 @$ w. U' A  I% s( K- x
      in=new DataInputStream(socket.getInputStream());  
3 O/ D( ^. W6 b" r2 y. Q, L      out=new PrintStream(socket.getOutputStream());  * L5 _( ^. A0 X. F# ?
      out.println("We connect in "+new Date());  $ P- A5 a/ P+ D' {! d( D
    }catch(IOException e){  
, ^# L* X! N5 X% @2 {& o      System.out.println("Server is failied !");  
' G; Z* P3 w( l7 M0 o* {    }  
8 E3 g3 R% J% Y: {* H  }  - v! b1 V. |* v; D$ ]; @3 O; x% q
}  
; @0 g# T' B4 F# a* Z$ Y) p   & W2 b. h, ^+ A
  R4 Z( V: Q) i* f' Z8 u/ `: x
客 户 机 :  
! h( l2 _9 f! n8 P5 ^; C  h' yimport java.util.*;  . K% @# z! G6 _5 `0 C
import java.io.*;  
+ W- _6 N+ X) Pimport java.net.*;  
- e0 v4 q' A& i8 z. ]
" A) k, z5 ?- O; L6 Gpublic class ClientT{    v8 V$ Q! S7 a! ^
  public static void main(String[] args){  % d; b& A' c# s7 g8 h/ \/ T
    String welcome,response;  
( f6 C+ J& V3 x, r0 Z2 u    Client client;  ) a/ z. ~1 B, P9 S
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
' ?6 J6 ?/ R- B- |) S    boolean Bye=false;  1 D, y4 o8 u4 C1 N- S6 M
    while(!Bye){  
& F8 W4 F; R  x) ]0 s3 P    try{  
' s# J3 j$ n2 y& Z& h* [      welcome=client.in.readLine();  - d  Z* n' D5 F% h
      System.out.println(" Server says: "+welcome);  
( A5 C. {( ?7 F5 x/ {. S( E# J      client.out.println(keyboard.readLine());  & P& w: c- N: N% Y( u( g
     }catch(IOException e){  2 \' k- a, `1 ~0 u
      System.out.println("\n The talk is CLOSED !");  # L- `. Z; O* z$ u
      System.exit(1);  
; m! h: i7 T& U; \    }  
3 `% ^) `5 v! v, D+ |. c    }  
' B0 B5 E5 i7 e+ c) C    try{  
$ u! ^9 f% [3 O8 i      Thread.sleep(200);  & Y; k6 T, w2 i
    }catch(Exception e){  
2 }% E! ?- Q1 T# K% q. M3 e      System.out.println("It is a bug !");  ( p' o: k  D' U2 w6 n% q  B9 O
    }  
; }9 B& q1 _# L, n; H3 \  }  " J9 d8 g$ L4 y
}  
9 G  d! ], h& B& w4 x% Rclass Client{  * M# ?6 O0 w$ c# r9 F. D
  public DataInputStream in;  
4 T5 x% C8 ?- {' t  public PrintStream out;  
0 p7 k  h  [. z' n- t% N/ u5 K  private Socket client;  $ K: B" |8 I- @- z  y
  public Client(String host,int port){  
( q2 n. Z/ i) Q$ |6 `' D    try{  6 M" f& r0 E3 T: _9 `- N
      client=new Socket(host,port);  , w2 {2 ]- }6 I4 O4 J5 b% S
      System.out.println("\n  ; s' y8 x4 @6 ~; O7 w& Q
***************************************************");  
5 C4 i# C" E3 F, i      System.out.println("\n @(               Version 1.00 97/12/30 ");  5 H0 v( U: u/ Q& \' \9 @: m7 T. i" S
      System.out.println(" Copyright (c) 1997  3 e5 S2 j+ x5 W  m$ E* ?6 E
          (Lui DongBing) All Rights Reserved.");  
5 x8 n% |1 K; X* A/ ^1 I$ x. J      System.out.println("\n  ! f" `$ p; F2 b
**************************************************");  7 s) L# [* c9 h$ w) _: D
      System.out.println("\n Client socket:"+client);  
- G) h& g2 b- V3 p1 o- j      System.out.println("\n Client is ready ! \n");  
& ~: w- \" E) t! U' C7 M) @* h; y      out=new PrintStream(client.getOutputStream());  8 \) y" }0 k$ U5 ~' i7 r4 M7 G
      in=new DataInputStream(client.getInputStream());  7 A* D/ h9 L6 v
     }catch(IOException e){  9 j% `. n  C8 w+ l1 y  }
      System.out.println("\n IOException !\n"+e);  
# J. W; g* s7 K- n1 N% Q2 p) n      System.exit(1);  & T$ A& L; _+ g6 i% y, F
    }  : P6 i# @0 ?1 L% T
  }  
  c  ]+ X! o6 {1 {}
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-12 18:29 , Processed in 0.708972 second(s), 70 queries .

    回顶部