QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  / A# i! C0 b) p9 K
9 c! y8 G* R# |, R7 T. K( T
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
! [  P* K) [! r5 F( P& [6 M$ o6 I% a4 w& W4 _
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  3 n" _5 v: L8 u6 X' C- W
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
! T( w2 f  }% d3 @- Z: t% z8 ?  T: e+ ^6 ]  B5 K  N  c* d
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
3 m1 }& p# T$ B1 G
: Z* ]$ o2 X/ `' z; E3 m" Y---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  & a6 q# ~0 J# D2 r% `
( ?0 {8 _$ Q) o" Q3 g
---- 例 程 如 下:  
1 k0 l5 h* [4 m. F# p4 h
3 W5 ?9 M7 T/ Q  i4 t: A      import java.applet.*;  6 P4 E1 K- X* b0 ~3 x+ |
      import java.awt.*;  
; `( E5 y5 G8 N9 q; |2 T      import java.awt.event.*;  ( H$ Y4 T) M% P# N
   
& ^9 d" O' V5 R1 T4 _9 q
0 x/ A1 _  H# [3 Q* V" N! k      public class Example extends Applet implements  ( G$ a* V! ~& c1 w# Y) U2 |
                       ActionListener{ //          public static void main(String[] args){  
! H- T# i" t$ j" [& m# r           Frame win=new Frame("Example");  
0 w2 I. U0 l( f6 h+ ]/ G% G           Example example=new Example();  6 _8 \. Y! f  q6 ^7 E8 n
           win.add("enter", example);  
/ u. \& X$ r  @" X" B; a           example.init();             //            win.setSize(600,360);  4 s8 }/ k2 Q1 i3 Y# ^
           win.setVisible(true);  
* ~: q; y7 A2 ~( l         }  ; s& Y  u, P& q
      public void init(){                        //            Button button;  
  c4 O. e6 j- ?( I           Label  label;  * @$ W  I/ e6 [' P( o/ r& g7 P- [
           button=new Button(" OK "):  3 z; Q6 S6 f9 J/ H1 |5 J
           button.setBounds(280,200,100,20);  8 j4 }! I" s* u# ?5 a0 i
           button.addActionListener(this);    k/ b  V/ y7 A3 G, z
           label=new Label();  
3 f0 S5 k  n/ |6 U+ ~. P           label.setBounds(260,100,200,20);  
# I0 h! W, q' `5 m  k( j           add(button);  + u6 H! j* t2 n" l% L
           add(label);  + Z8 k# y! Q: s, @
         }  3 _7 A. w4 p0 b7 e
       public void actionPerformed(ActionEvent e){  
0 U$ t- i" i1 z& W           Object source=e.getSource();  
7 Q0 N7 n1 a8 Z' u5 u0 a           if(source==button){  # ?- d% j, K7 `
             label.setText(" It is a example !");  7 k' o$ o1 `$ H
           }  9 Y) D% _7 y" Q$ m$ L, ^
         }  ! M+ j- w! w% \8 _
      }  
8 H6 c/ x+ F! @2 X* C& j% Q$ t7 M0 r7 X
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  : }0 ]2 f1 m, q) O5 d
$ \4 Q+ d2 b& T8 i0 b2 I
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
" y" p, s0 F! ]) }. J7 R( w" ~# O3 o' ?0 P
---- 2. Java 中 的 发 声 提 示  + t' J% m& q  y' h& e
, g4 i# _. `) Z* V
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  6 F; ]) h+ ]3 f$ P

3 m& I% Y) y9 Q4 k$ q' }1 s) ^# K# d/ h---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
5 M+ e' G3 O4 W) d" G& ~! z
6 E4 y% h4 b: r* ^' c       AudioClip audio;  
9 b' n% A0 G- e9 T         audio=getAudioClip(getCodeBase(),"Hi.au");  
1 O: X8 b# y3 J$ p" a& o; W         audio.play();  
) {/ k6 L- U8 A# P6 i4 t% T3 a; t. s# z4 ?
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
# ^9 T# c7 ]5 B# L% u够 被 调 用 的 。  2 y; |. U! e) b$ R

' Y' k: y+ U' k---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
0 U4 B+ t9 H- z! j* e; G- {
* A! v2 I8 I9 _---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  0 B; I  n& o$ v. K: {8 O5 V: e
# f$ [! z; B5 S" i
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  ! M1 T: N% I' V, ^0 P2 ^  v2 V* d/ ]
* c1 y: L, o, q, G' @. [; L
---- 程 序 如 下:  
; h: t0 I8 w6 w1 v; P( m) G+ m% M; N0 P4 }% ^
服 务 器:  
/ r0 r3 U7 s- C8 C' _8 Fimport java.util.*;  
- ]% }& \2 f7 z1 L" |5 Himport java.io.*;  1 S; Y2 Y+ {2 t  F( L( m0 B
import java.net.*;  
9 b/ r8 \: K" z* Y- U3 himport java.awt.*;  6 X& w! D4 }8 X& o* u
4 q6 S1 r. j! p4 _4 F) Q
public class ServerT{    z/ n$ Z9 V  |8 ]# V" D+ r
  public static void main(String[] args){  
* c. g! y6 D- i5 h+ ?    Server server;  
- V7 J6 W6 V/ X9 a2 k    String clientRequest;  
6 p( m: r* F& }1 L2 ~( k5 C    boolean quit=false;  4 m! z- `4 h0 m7 P5 S& R. J4 ?
    server=new Server(8001);  
  _8 G' K+ Q' w( _2 i" }    while(!quit){  & A& n3 g! L) N% x
      DataInputStream keyboard=new DataInputStream(System.in);  4 o8 |6 G. B# S6 [. r( J/ o' s! ?
      try{  
# q* ]! e6 Y: r. x3 M0 R( j        clientRequest=server.in.readLine();  : l, r/ a! G4 q
        if(clientRequest.trim().equals("CLOSE")){  
" L: n/ b$ P; ^: Z& h          System.out.println("Client says: "+clientRequest);  
: L% j) H. Q' f; j6 A, n4 }$ n          System.exit(1);  
+ L6 b) R/ X$ U7 c( j; Y5 T        }  
! K3 W2 @5 V' d1 a, s4 G0 Y( `        System.out.println("Client says: "+clientRequest);  + Y& Y* F9 P% k
        server.out.println(keyboard.readLine());  8 t' z+ a# J4 u2 A  h
       }catch(IOException e){  
) c# `$ D3 b  J- n/ N8 S        System.out.println("IOException in server.in.readLine()"+e);  
2 }' I& P3 e( v' K        System.exit(1);  8 d+ k5 P. Q1 ~% q# m
      }  
0 |  u  c3 _( B: a4 B( _' O$ B, n6 D    }  
1 V- W% ?6 J* [, X$ O) M: _4 S  }  
$ [1 F" B" [/ p7 m& R5 h}  3 u2 K0 ]/ ^% u6 S* U8 q9 `8 d
class Server{  
! m; t2 D' @5 w. i( Y  private ServerSocket server;  ; a4 N% w9 N* C) W
  private Socket socket;  
+ u8 P2 C9 c- l8 T4 d  l! j2 ^  public DataInputStream in;    X0 Y) |) Q: }3 [% X
  public PrintStream out;  
! q1 j: z" c" s2 I% O1 f1 j: r  public Server(int port){  / [0 d6 |7 h: M& H; B
    try{  & t; l1 d$ d" B  [* ~7 i! `6 E3 |% R
      server=new ServerSocket(port);  4 _& p! d; B, E# C4 d: o
      System.out.println("\n  / v' R7 g2 Z3 q, p8 w# Q4 O0 u
*************************************************");  
- P; r2 j* E9 I7 N) j: `4 W! ~      System.out.println("\n @(              Version 1.00 97/12/30 ");  . G! @% C! Y' l4 `1 i
      System.out.println(" Copyright (c) 1997  
$ C& `3 Y5 F+ ?# X. s5 L              (Lui DongBing) All Rights Reserved.");  + d6 V4 D0 U' P- `" B3 H
      System.out.println("\n  7 f* d& M9 i, j4 U+ k  w' S
***************************************************");  
  }% X, R# b. y) {      System.out.println("\n Server is: \n "+server);  
# q. D, m( ~3 r* u# L5 A      socket=server.accept();  
: p* K. R8 |5 Y, [! x      for(int i=0;I < 260;i++){    // 发 声 提 示  2 Y+ ~, q) a& \1 M  G( V. `1 @: N5 v* `
        Toolkit.getDefaultToolkit().beep();  
5 Y# M; k) f7 X# e) I7 J$ f8 u      }  
. D* ?# P9 i/ `# ~      System.out.println("\n Server is ready ! \n");    o1 M, ]6 h% K
      in=new DataInputStream(socket.getInputStream());  , P# j/ F. e$ K4 y# S
      out=new PrintStream(socket.getOutputStream());  ! Y5 c' s7 d* ~$ \# U
      out.println("We connect in "+new Date());  
. |! y/ W! T1 D; @    }catch(IOException e){  
. n, ]! W7 X% j      System.out.println("Server is failied !");  
! R, Y: b! N4 _* Q2 o- d2 Z* B    }  - |. G% N% r# @% H" ^+ e
  }  / b5 `# \) Q# @
}  
0 ]* L  `8 \1 S  ?   , E9 a& u+ ^. o! s2 h) Z

' L0 [* _1 D& H+ V/ {) p 客 户 机 :  
( S7 h# R; y' eimport java.util.*;    t/ J  A( S6 o3 h) _
import java.io.*;  ; W" u1 x$ W! q
import java.net.*;  
" e& t* O) s/ J( e- q' |8 R1 m" |+ H0 e, H% Q9 Z1 ~
public class ClientT{  
" Y4 E6 Q9 k) ^! v  public static void main(String[] args){  
0 c. s$ l+ z- q+ `+ g( h    String welcome,response;  7 ]; T4 c# f( Y0 ~# z5 w5 l* V9 b- ?
    Client client;  & O6 B9 {" \6 J+ J& X% g- i
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  8 n' v0 ^+ x, x1 X
    boolean Bye=false;  
/ w+ n1 B% P7 G0 v    while(!Bye){  # @8 F! K4 E# @7 j
    try{    g* O, p0 _  S: z
      welcome=client.in.readLine();  3 M3 ^; M" I7 U% K$ u6 O' G( s
      System.out.println(" Server says: "+welcome);  ' Z$ V- N3 l4 h1 J
      client.out.println(keyboard.readLine());  
* A1 y$ s' D* A( m0 Z     }catch(IOException e){  
# \5 J0 k) e' J8 J' @      System.out.println("\n The talk is CLOSED !");  0 _1 \! E9 c! u( a* H
      System.exit(1);  - T# ~, H$ f% o& ~
    }  : b2 b3 V* W: v  T, O. ]2 D' s
    }  ) U# d% b0 B" F# f; D5 B0 o
    try{  
3 H# N/ l7 T1 ]      Thread.sleep(200);  8 ^! Y$ K' P( d5 k; p4 {1 t
    }catch(Exception e){  
5 F/ ]+ `& U- Y      System.out.println("It is a bug !");  ; H. [: ^3 U7 [9 u# \4 {. t" e
    }  
& Z% S& W: I' D' A2 X! _  }  , M1 i2 d$ P/ s2 ^+ r/ k
}  
& H1 N0 d* w! X" r( Y$ H1 oclass Client{  
  O. ~! |* B) V. |4 D  public DataInputStream in;  
' }- J$ k3 Y/ V; u1 I7 n  public PrintStream out;  
" }7 @8 S( M5 v5 w5 H  private Socket client;  % |3 o) Y* N6 Y; L3 G5 y, o) o, B
  public Client(String host,int port){  7 Y; B9 r" F- `* n# G* h6 H' |3 \: p
    try{  4 C! c. [# `8 ]' H- j
      client=new Socket(host,port);  . t; c: N, \2 N2 B3 F
      System.out.println("\n  
  Q# s7 t, W- u2 _: d***************************************************");  9 X* a- ~6 ~+ n$ t( O3 _
      System.out.println("\n @(               Version 1.00 97/12/30 ");  7 ^" |6 W6 U5 y/ d& h, Z
      System.out.println(" Copyright (c) 1997  
' C0 k* {0 m/ z/ b          (Lui DongBing) All Rights Reserved.");  7 s6 Q8 n4 N& N; L- P, G! w9 a: G9 S3 F
      System.out.println("\n  8 ^! y. B0 T1 ]  Y( d
**************************************************");  
$ e" z2 t: T$ }6 w3 r6 u      System.out.println("\n Client socket:"+client);  8 w# I1 I* ?" Z# m& k& [
      System.out.println("\n Client is ready ! \n");  , O' V' N& Y, U6 A
      out=new PrintStream(client.getOutputStream());  
# M+ t& ]) \% }) R" B4 m3 j- x1 V+ v      in=new DataInputStream(client.getInputStream());  $ ~; _+ ^  S1 B
     }catch(IOException e){  
% T# p* N7 w% q% q5 e4 J! ]( p      System.out.println("\n IOException !\n"+e);  
# W6 Q/ n( @. B+ q      System.exit(1);  ; b$ V  M' d; X
    }  
( l. h: G$ Y- q, Q, {  }  
5 u9 d9 l1 ~9 V% K% z  r$ b9 ?}
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-12 01:42 , Processed in 1.101345 second(s), 69 queries .

    回顶部