QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
. @/ Z; U% ^8 O4 [7 y! u2 l+ g3 N
$ s7 i8 \# F: a---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
) ^% [0 \2 q; X9 W  y
) y6 B" u# u" F% H2 }---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  , c) S* S( Z; ]7 F) \9 l, o( L
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  8 G) `8 ]% s+ Z- w+ b) G# k' s
3 c2 G% R' V  T0 h# g% {
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  0 W" v8 X0 ^' z2 O) b
* R4 h/ i3 E5 o- v: ]
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
% d# P& K5 `; ^  g8 l6 T! c
* C' e5 Q" Z. m( ~---- 例 程 如 下:  * ]: P8 w7 A; ~% \3 s$ t: Z1 h2 y
" f  P7 c2 S1 K- ~) |% l
      import java.applet.*;  
- C. I2 P) d3 P4 J5 ?+ `7 K      import java.awt.*;  
" l: f$ M6 {6 a9 G% d      import java.awt.event.*;  
2 A1 m3 `, [" \   0 O0 [/ q+ l6 g9 H7 ?4 J& l% c2 q

, L+ j, e, ?5 U& A      public class Example extends Applet implements  
! m; `* `( G  q$ T! M" Z                       ActionListener{ //          public static void main(String[] args){  
4 ?2 y, j4 s" R+ ^           Frame win=new Frame("Example");  % M, R' L- x% {6 O* z
           Example example=new Example();  
% b/ E, ~: ]' W( @9 v           win.add("enter", example);  
* j& e/ z) T0 P$ ?0 }: V           example.init();             //            win.setSize(600,360);  3 `1 Y2 `8 Y5 h5 l4 g
           win.setVisible(true);  
6 m: x% `, [7 T( Z$ ?; L8 s         }  
5 B! w% |5 F' D- X2 m6 `      public void init(){                        //            Button button;  1 J9 ^2 G  a1 p/ ?8 H/ r
           Label  label;  
1 _, D) z+ N: Q# q/ x( o. O2 M           button=new Button(" OK "):  
1 K# q  N9 j4 f' M5 A5 a5 ]           button.setBounds(280,200,100,20);  
( B9 z9 _/ }# B- [! T  t* W           button.addActionListener(this);  
; {6 t/ k0 m% w5 w           label=new Label();  
2 P5 ~9 ^2 V: ~  {           label.setBounds(260,100,200,20);  . Z2 A4 N3 E+ ~* n2 Y1 X
           add(button);  
" b8 Z0 j- B8 p8 H! E1 z5 @0 W3 R  [/ m           add(label);  # s9 j' w. P5 A2 T! k& b6 R4 X8 ^
         }  
" U9 k; Z) v3 {( S: S3 Z       public void actionPerformed(ActionEvent e){  2 n9 K6 k+ _, h7 X2 E/ E* v& f8 S4 U2 U
           Object source=e.getSource();  / q4 J: P! t# y4 k- Q" \. a
           if(source==button){  3 f$ P3 h6 O# F4 R
             label.setText(" It is a example !");  . j. F3 [$ C  E
           }  5 X' I2 j# n; n% a
         }  
; y7 Q% i  p# @      }  
1 _" \- [# ?7 |( C/ M* ~$ G% p$ l% k+ r
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
2 X5 e- b. O, H' U& l- S
) k/ [' H0 V5 l4 A% u) ~/ l---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  & e4 b  i; q$ u! ~

9 B7 v2 |! ~+ n---- 2. Java 中 的 发 声 提 示  6 B: o  p# p; `! L, P! v2 r* c
; o. J% r0 e6 U
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
6 m$ p  G" Y9 c3 B4 w3 [, Z1 o4 Y7 u% O5 @& x
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  ! v/ L" d0 b( n

& d! |6 S5 O. a! [       AudioClip audio;  
4 I+ n7 S4 O0 q4 Q9 C( d         audio=getAudioClip(getCodeBase(),"Hi.au");  ' B" c& x- l9 E% c* c: ]
         audio.play();  
/ y7 w9 j1 a) `5 D! N0 K4 r* w! F3 [* X+ o2 n  s: s
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
# ~" V) `9 W% w& T2 O8 _' T够 被 调 用 的 。  
! u1 t7 S. U4 X; H3 r
, a, w& M( s- m  \& o- L1 L1 A---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  . L/ ?) t( w+ W3 v
& \0 i1 i2 n. n# u  g9 \8 R# W
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  ( h- \9 c) G- y, r! c2 i
3 R3 v; K% [/ G; d9 j5 J. u( E6 d
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  * g5 t8 Z' \+ C8 y1 H: }( \
6 Y4 O5 D9 i/ f0 W- Q
---- 程 序 如 下:  
. }% r0 E( Y; \- r: g+ A8 Y5 A3 e4 @. P; X0 h
服 务 器:  
( D% \: B6 F  ^" o5 |) H9 Simport java.util.*;  1 O1 q! U1 N; f
import java.io.*;  / ^) g& S2 x- [  v& E3 k+ {( B' ]
import java.net.*;  
' O2 W* r0 T) l6 V) ?import java.awt.*;  
+ E% w4 }' W" H5 B3 k
  l% s0 X) k8 d' Apublic class ServerT{  % l5 ^1 [0 w- [4 {1 o
  public static void main(String[] args){  
. n) E0 Y8 e  m, u% a; U8 z    Server server;  
% i! Q. M* M+ N    String clientRequest;  # E# {6 ~4 r6 a$ T* e" b$ }
    boolean quit=false;  3 f2 z* E9 ]3 S+ }7 U
    server=new Server(8001);  0 U7 k6 U: c7 @5 p0 \0 K
    while(!quit){  
$ I5 ~+ u( h9 j1 {+ Y- W      DataInputStream keyboard=new DataInputStream(System.in);  
1 E, c' p0 \, D/ p/ |      try{  
/ ]. K& I! _  Y& F8 _5 U        clientRequest=server.in.readLine();  
, t+ ^$ ^$ \3 H3 Z: h        if(clientRequest.trim().equals("CLOSE")){  
" x8 T9 V  E, N* }3 D/ \/ G/ g          System.out.println("Client says: "+clientRequest);  
/ d# ^* _% ?* l6 s0 C          System.exit(1);  
% s- M" P+ C$ a' Q        }  
. ~$ ^) \4 V3 t5 |) _: Q9 T        System.out.println("Client says: "+clientRequest);  
, V$ h" v! d( ~5 m! o0 K* G1 X        server.out.println(keyboard.readLine());  
; I8 y: j# ^- |; r* ]       }catch(IOException e){  
; M5 F" y, b) H2 o, s- X        System.out.println("IOException in server.in.readLine()"+e);  . u2 a3 z  I* e3 ^, |
        System.exit(1);  ; R7 H* A4 ^$ k, E4 ], N0 A3 K% \
      }  / H/ F1 Z9 ~) \, ]5 S: I. V# U
    }  $ a4 ]* }. c) @- |1 g/ U; E
  }  9 f* z! k! D) Q$ J" C
}  
$ T2 t! A0 k7 p6 o: {; w: Hclass Server{  
4 ]% w7 i; }/ i+ Y+ N  a) f; w  private ServerSocket server;  
6 U1 b2 t7 E* w4 G* O2 X2 J  private Socket socket;  & H' v9 K$ L7 O$ v* t
  public DataInputStream in;  ( P8 I3 P2 k9 X+ s; j
  public PrintStream out;  0 p" |) R8 w( l8 B2 [, q& H
  public Server(int port){  + }% Q" g4 w4 X
    try{  : H# ]6 t2 g- H( l3 q% P
      server=new ServerSocket(port);  5 Q' g( o4 r) ]4 S4 V
      System.out.println("\n  
' ?* s0 s- T* R*************************************************");  
7 O4 o4 X. D% @# E  @0 f      System.out.println("\n @(              Version 1.00 97/12/30 ");  
, E6 B) Z+ s+ D% @7 z) N) e      System.out.println(" Copyright (c) 1997  
9 E# R' Z$ V( e$ L5 ?$ H1 L9 X              (Lui DongBing) All Rights Reserved.");  
' o- K5 x! k- Y+ P6 _1 O. o1 V      System.out.println("\n  
, V* W* v# u5 P; C, |6 c***************************************************");  
. }( x( o) E$ F* I/ z3 V      System.out.println("\n Server is: \n "+server);  ! t; h$ {8 l8 [- e
      socket=server.accept();  ; q( U4 Q, O+ z8 N" h
      for(int i=0;I < 260;i++){    // 发 声 提 示  
! q# x! }/ m1 e, K- `) {5 f' @        Toolkit.getDefaultToolkit().beep();  5 X: l9 H* _: ^6 [
      }  ' H- F4 Q* B, `1 A: Z; w9 c  Q, l
      System.out.println("\n Server is ready ! \n");  
; T  g) s6 E" \1 U      in=new DataInputStream(socket.getInputStream());  4 D. m. l& A. G" E1 c0 B& n5 M9 C7 {
      out=new PrintStream(socket.getOutputStream());  
4 k7 Z! m$ [) s) ?      out.println("We connect in "+new Date());  
" @) {/ y  G/ V0 x* D8 h    }catch(IOException e){  
: S  e5 h  A/ [! R% q7 b, x      System.out.println("Server is failied !");  7 g1 j5 b. W) u% h# u! v
    }  
8 v. y/ I! S8 k, z  }  ! }# @5 L6 \6 }8 s4 x% d) J
}  , ]' }0 y0 q6 a  V) \
   
) P, ~, u1 O% ~+ d6 M5 g/ c, z& A; i3 t+ k2 C  j3 h
客 户 机 :  : g- ]# T' q( G: q! Q$ T
import java.util.*;  ' I9 I# N9 r* @# j
import java.io.*;  5 B; r& ~" r  }
import java.net.*;  
1 @. }' l, W# s2 O. R" C! s2 J6 }
) X2 m' A7 I/ jpublic class ClientT{  6 |/ `& U. U& P0 V0 |% O; u
  public static void main(String[] args){  8 q) b# J) x/ ?
    String welcome,response;  , @5 U2 U  o% \
    Client client;  1 f4 }% }* a  K0 e
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
: Q8 W% _: p# x    boolean Bye=false;  
8 W$ @. O- D' L* n: Z    while(!Bye){  
+ r4 ~& N4 T5 G4 o, g; q    try{  
& z7 X9 [, Z9 Z2 n; w2 Y      welcome=client.in.readLine();  0 U; r$ v9 e8 _/ ]/ }5 f
      System.out.println(" Server says: "+welcome);  
" U6 o+ U" {$ y! I  J& c* y, ~      client.out.println(keyboard.readLine());  * J- P' N) u' S: }
     }catch(IOException e){  ! K4 v( a) U1 G) V
      System.out.println("\n The talk is CLOSED !");  / Y0 A( ?: g# {" |' ~/ q5 B" j
      System.exit(1);  
1 T' t: b* R6 Q    }  
1 J! p4 p2 D4 z. V4 @4 ]" I    }  3 C/ L/ d6 Z0 E# h
    try{  4 s* Y8 T0 {% Z  h* I
      Thread.sleep(200);  
3 e. ?) b, q# k" z( O: a0 z2 p    }catch(Exception e){  1 D1 H2 p, S3 B5 D/ t9 O. h
      System.out.println("It is a bug !");  
7 ^! h: X8 M2 w( v* y4 P    }  
0 ?& O# L+ ~9 ]! @  }  $ o: H! Z( i& O) x7 w
}  + V3 O  K" w( D: |
class Client{  
: Y+ Y: O& C/ K9 x  public DataInputStream in;  1 z, {8 N! d: I( o8 o' a
  public PrintStream out;  ) T/ c# z, N- G- c3 u$ u
  private Socket client;  
2 }% H7 D" e2 C5 V5 @) j  public Client(String host,int port){  . h& F4 a3 _$ j+ K4 s8 _( l
    try{  
: `& e; t$ ~, D4 ]      client=new Socket(host,port);  
& }9 l: q) ]% k" e      System.out.println("\n  2 z3 Z- W: _8 R0 Y( }
***************************************************");  
0 p; V. ?3 |  N5 F      System.out.println("\n @(               Version 1.00 97/12/30 ");    |! Q# v/ K% e$ [; [+ l/ [
      System.out.println(" Copyright (c) 1997  
5 |* L4 {7 c- z3 Q( B          (Lui DongBing) All Rights Reserved.");  . L) s  p; r+ S% d; c
      System.out.println("\n  ) b, U4 x; R% Y6 A0 u# {  i
**************************************************");  
- y- {/ F- Q. c; z4 @6 l      System.out.println("\n Client socket:"+client);  
8 J+ r& R0 r& k7 U, Y      System.out.println("\n Client is ready ! \n");  
# s" A+ Z" Z; ~: `8 v8 O7 {      out=new PrintStream(client.getOutputStream());  
5 p: m, l: U* }5 M+ G) ]/ P      in=new DataInputStream(client.getInputStream());  / ?( k% r6 W4 F4 G# }; E
     }catch(IOException e){  
. O: ~) p/ Q/ V1 E      System.out.println("\n IOException !\n"+e);  
5 i4 C, m" }2 j- t- y7 R- w      System.exit(1);  # T5 x+ J& J9 i" [
    }  6 i3 M* |! k2 a; d0 N; s+ V
  }  
8 S: O. v- j/ g/ |0 y4 n}
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-13 20:56 , Processed in 0.393518 second(s), 69 queries .

    回顶部