QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  % p) C/ Z+ E4 U& u; Q, f: M& K
% X6 B6 x; f2 s. k
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  ! q& w9 j4 I0 f; x# y4 u
7 L# X7 H5 M, j4 `  K0 i6 X$ O
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  ; S! ?: S, q9 }6 @  [
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
/ d( A8 u# k2 D' t
! A. x4 K0 O8 C$ q% S---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
- t0 c6 o8 i9 m
7 o! v3 v3 ]* o. y( ^3 C---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  % }5 v5 p, j& m7 A0 j" R0 o
/ \* q1 ]; _7 [+ B+ T
---- 例 程 如 下:  * W7 L- [/ r+ d0 p5 |

6 G% \9 l. p' c) r      import java.applet.*;  - H, F/ [. C/ `
      import java.awt.*;  
( ]6 |" b& F9 K      import java.awt.event.*;  5 g. V! r1 E! g6 g$ t/ `7 @5 z
   * |4 T  s" R4 e! k
7 y' T" O$ W; M7 J8 x
      public class Example extends Applet implements  
# w* u2 M" F7 O2 z                       ActionListener{ //          public static void main(String[] args){    R. _% P5 f- x5 k0 R6 h3 V
           Frame win=new Frame("Example");  
# H/ c- f, d5 U! h0 U7 E' y+ \' b$ e           Example example=new Example();  1 Q! k* O: x! q0 y& _: ^
           win.add("enter", example);  - q8 E. n  L; t/ [' F% W3 Q
           example.init();             //            win.setSize(600,360);  
/ m- u9 v9 r  w1 G           win.setVisible(true);  
" J8 A) O8 e5 j         }    X- ?" c" [; p5 C  X! P
      public void init(){                        //            Button button;  
6 H& x& s$ o+ M           Label  label;  , X" q' v! B& {# F! v
           button=new Button(" OK "):  ' M. U/ G! ~+ g) g. m
           button.setBounds(280,200,100,20);  , C/ O/ m* z9 w. S+ A0 }
           button.addActionListener(this);  
' ?- l/ V* Y) ^( o' ~           label=new Label();  
  o% e) a. x. A5 G4 p! b           label.setBounds(260,100,200,20);  2 d) b, L2 {9 m  K: x- l. n
           add(button);  % v" \1 Y% l# w  U3 u+ ~! P+ P. I. e
           add(label);  
) s& i$ U" }' l         }  
! e3 y! o: w2 e+ n& ]" P4 E       public void actionPerformed(ActionEvent e){  ! k* |8 K* D: v* P- N2 I
           Object source=e.getSource();  
. ?; N, q$ o* \           if(source==button){  
, ?# N0 a2 @$ f& _& _4 c) q) t+ r9 C             label.setText(" It is a example !");  0 M: I' O( p8 y( e
           }  4 b* E/ v5 a0 _, Q
         }  6 M# n. X* [) W% W( O
      }  - z! N& E  D( M$ B
( Z& r) p. }. f3 R2 B4 [3 ~
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  ( f$ g% r) _+ ?( f6 }0 A' X

: A" x# l- Y9 b$ a5 [, g% z---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
7 `* N  ?. q' P0 K  O2 u2 s) T2 h! v% Y
---- 2. Java 中 的 发 声 提 示  7 C3 A7 c- Z; g- {& {1 E+ S5 y9 J

3 ?+ Q* C% `, `$ N. S---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
0 ]# h, Y' b# _0 Z* I3 J% J% u2 b2 k; b1 \* L. z/ _% p
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  4 y0 N" P- ?; I$ ?2 @! T
  o- o( I: h' `& Q! k7 j% Z: M& t
       AudioClip audio;  
& p8 c' J- b! Y+ f3 H         audio=getAudioClip(getCodeBase(),"Hi.au");  7 G) s& m3 O: B, s  r
         audio.play();  
% j" O  k6 z0 _6 B( b( {+ Q1 C. c
0 a) K' [# z7 V1 w  D---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
! a7 l6 H$ B5 y够 被 调 用 的 。  
& i$ M7 _$ Y# L" B1 B2 f% P. _' x$ ], N5 M+ N
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  " V% o% _; G: W; z# g" B) o
, P$ `/ x. Q/ y# I% U
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  " j+ [( z7 O8 Q% X3 N" ~
; S% K( N* H# {5 g$ v
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  7 F" u! M1 Z: Z* s, m
2 l) U6 Y4 d) u$ R$ o1 |# H
---- 程 序 如 下:  3 i  N+ r8 L4 Z# h

4 m% d, A- i. u5 ? 服 务 器:  , n3 W' L/ _% `, s/ O6 f( H
import java.util.*;  
  }( ~: {: f7 s3 S$ i* h1 a) Cimport java.io.*;  
! E0 g, K0 S7 _+ g* himport java.net.*;  1 q- `' e* D, [  J6 {6 z- \
import java.awt.*;  
. A( J% k8 y% M$ Q9 `, K5 o4 R/ R) j. s
public class ServerT{  ; G  I7 V- B2 u# j5 \! |
  public static void main(String[] args){  
' F7 R( v# ]$ l  d    Server server;  * s, v4 D/ h# }7 ^6 u" z! U
    String clientRequest;  
0 X* N- u4 V8 X1 ?    boolean quit=false;  ; u2 P4 \+ N* \+ h. Q
    server=new Server(8001);    K# d+ [8 S/ g1 k5 a
    while(!quit){  
4 I3 W$ K6 f! L5 @      DataInputStream keyboard=new DataInputStream(System.in);  ) R+ U2 s0 g4 s- w8 s2 Z- `9 `- T
      try{  6 b3 \  j0 W1 H1 `$ F7 D
        clientRequest=server.in.readLine();  
( N& v8 Q" y3 u4 A2 T/ d. k9 ~& {* ~        if(clientRequest.trim().equals("CLOSE")){  ! u" O  c9 g$ ?( l! @
          System.out.println("Client says: "+clientRequest);  
- J& D. v* `; U) }          System.exit(1);  
- o( {/ d+ b* P+ p% S        }  2 C! d5 ?, g% z- `" H* N; D
        System.out.println("Client says: "+clientRequest);  : X1 h: U9 E- b& P4 V4 ?4 y
        server.out.println(keyboard.readLine());  / ^3 m" L6 Z* ]7 D$ N
       }catch(IOException e){  ( [2 s6 |9 Q0 v+ |- K
        System.out.println("IOException in server.in.readLine()"+e);  # [" f+ L8 s( [" c
        System.exit(1);  
. k6 ?$ P/ {) ~% B      }  . j, \3 [1 P. z
    }  
1 D2 f# F" a3 r0 b3 U0 B  }  ! Z, r7 v4 I7 T: U0 {
}  
1 S4 Y" b& i  ^4 m- Yclass Server{  / e* M8 T, {: S6 [: }2 g- Z
  private ServerSocket server;  
- C$ G4 R; I0 M( |, Z  }1 _& k  private Socket socket;  
4 P% v0 w1 D8 m5 B3 J  public DataInputStream in;  
$ W1 C6 B- h9 R, ]/ O5 N3 G/ N  public PrintStream out;  
9 n$ {/ E  y" _$ |  public Server(int port){  
$ P9 h! e/ v9 A' `& Z    try{  
. d! a. g1 @5 z( [0 m      server=new ServerSocket(port);  
1 V& V, c& x+ l0 b      System.out.println("\n  
6 A, ^; S8 W! f- Z1 C- V3 L! b6 c0 m*************************************************");    q. j8 _! R" p7 b
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
5 I/ M4 Q5 T2 O: v( t* K      System.out.println(" Copyright (c) 1997  
8 S9 u* W" m$ K2 A7 a: v+ W( k& \, L              (Lui DongBing) All Rights Reserved.");  , Z( b3 h" H: B7 z& i
      System.out.println("\n  
  k" q5 W1 w/ O/ A1 d***************************************************");  
, ]1 |; F5 [* h  j3 `0 l8 _: Z      System.out.println("\n Server is: \n "+server);  
* ]/ |6 W+ B; U  Y) E      socket=server.accept();  
3 c5 i$ n4 r  w& b      for(int i=0;I < 260;i++){    // 发 声 提 示  
# D- e8 W  C7 v+ E. Z: b0 I4 N        Toolkit.getDefaultToolkit().beep();  5 q( l( d: `, M( e: T
      }  
0 }+ ?  u4 ~# G6 g( ~      System.out.println("\n Server is ready ! \n");  
) U5 x, j9 z2 A# N- f9 A' O' U      in=new DataInputStream(socket.getInputStream());  ! \/ M1 ]8 B: v1 {. E
      out=new PrintStream(socket.getOutputStream());  
/ s+ @& Q5 p/ D, u/ Q8 ?; _      out.println("We connect in "+new Date());  
: o- D  ~0 q  ?0 e    }catch(IOException e){  
% ?8 ?9 \( W# F' Z0 x$ N9 B      System.out.println("Server is failied !");  & O5 n2 o3 w& {; Q( j2 J  b
    }  . E& a* x+ J+ a  B0 G) S. D
  }  
" r3 ^7 l5 M+ i, C6 A4 e, e}  " Y5 P1 O+ y0 [# S3 F; O
   ' V& {" V) q4 H8 x

7 w+ ?* R$ l; I3 m 客 户 机 :  
0 g4 |7 F2 y. e( G- uimport java.util.*;  ; M! ~4 D7 U8 c3 Q" v0 ^; `
import java.io.*;  $ V+ U3 p3 D% X6 c6 ~3 D
import java.net.*;  
# P: ~% W+ Q& M/ |8 i, n) K* t. c6 N& t
public class ClientT{  ) [6 i6 X; L) d
  public static void main(String[] args){  
" {) P# S* I9 j1 V, a9 t0 G    String welcome,response;  ( V  \& \3 z* U8 h4 ?) ~9 w6 {# ~' j
    Client client;  5 u# ^0 g, l* d5 G6 `! K# `; Z
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  . }: ]4 g; B+ i" R+ n* }9 c
    boolean Bye=false;  
4 j+ X5 I& m4 G0 D! B6 N" {    while(!Bye){  : M2 h6 d" Q( o+ ~
    try{  9 X% ?" B/ L6 k1 r1 `, ?9 q2 F7 i
      welcome=client.in.readLine();  * O# A  U0 X! o7 @2 E' Y
      System.out.println(" Server says: "+welcome);  & t, R# N- r& X
      client.out.println(keyboard.readLine());  
  n8 V& @% a' w& Y     }catch(IOException e){  ) p' @/ w6 Z9 J* l. @
      System.out.println("\n The talk is CLOSED !");  
- W  M/ H, n( O/ {3 k" p      System.exit(1);  / G8 L, ~2 ]1 Z& N
    }  
! T$ e& K% b8 o# x3 s1 D    }  
* ]4 O8 Z' h9 @; ?    try{  
! C  t" C/ X' \- Q      Thread.sleep(200);  
: \! t% V+ A) [3 R    }catch(Exception e){  . O: o8 D" c: Y7 `
      System.out.println("It is a bug !");  2 r: t! c5 A$ |* v6 l
    }  
  d' R, C- B+ v4 K- ~  }  
% K7 c- l+ A5 D}  / F+ M" h6 y! D
class Client{  : K+ D( q, B0 R# e# Q
  public DataInputStream in;  ) y2 Z% c4 `- u3 x! F. x
  public PrintStream out;  
$ \8 c8 Z2 Q4 X+ A  j, `, U# v  private Socket client;  1 q% s7 P! E3 v% f. f( x) f
  public Client(String host,int port){  
7 N0 C' y3 w/ W" M, A- f9 q    try{  ) v7 G. e! ?* e* M2 s: x. N
      client=new Socket(host,port);  " }7 [0 ~( P3 C2 D0 H0 v+ n+ f
      System.out.println("\n  
; ]! @/ E/ _+ p! q# q***************************************************");  
" s+ R( V/ r5 R5 V& ]      System.out.println("\n @(               Version 1.00 97/12/30 ");  
  H  I4 v: \7 [$ c      System.out.println(" Copyright (c) 1997  
, N: Y5 {4 Q0 c& x6 @# Y) J- f9 ?+ `          (Lui DongBing) All Rights Reserved.");  
0 F; O9 z* L/ O& C8 R% [      System.out.println("\n  2 h1 _. F7 a3 L. x( e
**************************************************");  ) o4 V8 i+ w$ `5 t  p
      System.out.println("\n Client socket:"+client);  
* f9 z1 I: J+ U      System.out.println("\n Client is ready ! \n");  $ q- c1 ~8 s( A1 u3 s$ a
      out=new PrintStream(client.getOutputStream());  
% V# O- H( G, m      in=new DataInputStream(client.getInputStream());  9 Z* l! E! M- `8 ^/ l( ~! Z
     }catch(IOException e){  
0 e& G1 ]7 }5 g4 U      System.out.println("\n IOException !\n"+e);  
0 V  i( ?& m1 I; X, G      System.exit(1);  5 A9 `3 H, T9 W
    }  
' a7 T0 w8 B5 i7 X  }  - e, q( c  J% k1 q
}
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-1-11 08:33 , Processed in 1.619898 second(s), 69 queries .

    回顶部