QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |正序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  ( _, U" j5 h/ `& c' N! i

  [# D2 \: b# q' ~5 G8 n6 l0 n---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  . Y" d3 p0 n  o: Z% g1 B2 L& _

2 j8 F6 G( w( W* ]$ M+ y7 R---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而    @$ b4 l& V) m( t6 }2 m
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
5 |5 }/ X' r: X/ [4 L( V' c; c2 G  _9 u4 J
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
+ {* n. N8 a5 I/ _* a. v
6 J3 Y( t; c+ B8 u: Y& }/ d---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
6 z+ N9 i9 u4 U( t- x0 @: ?( o! D, n* n( j
---- 例 程 如 下:  & n) [1 W* @$ M: h
% c- q2 \8 w8 ~2 h% i, ]
      import java.applet.*;  0 {  M- a! ?& P8 ?. W1 j6 M
      import java.awt.*;  
0 q7 e  ]' L/ x% I( F/ P      import java.awt.event.*;  
+ J0 R% H0 ^/ Z0 W* k( O   
. ]- ?9 Y% K5 V# v8 ^1 B9 y( F  b: X
' ^; l) y0 u) s; ?  j; I      public class Example extends Applet implements  & ~* `! t6 C7 v
                       ActionListener{ //          public static void main(String[] args){  9 q' a+ d  O; \! V* t0 z. s; a
           Frame win=new Frame("Example");  
9 c% b% k$ x2 S2 b) X; t9 ^6 l           Example example=new Example();  
* z1 s7 p. R" l5 \           win.add("enter", example);    E8 I; A1 }; @* B- ]# @" q7 K/ N
           example.init();             //            win.setSize(600,360);  6 b! b! P+ w! `' H
           win.setVisible(true);  
4 X3 H& i8 K: B% s         }  
" o$ O4 {4 W4 u; b+ i% ]3 w" z      public void init(){                        //            Button button;    m5 r% }; C5 D1 A) c
           Label  label;  ; U4 U2 D& o9 Z- t0 N& B4 C- M
           button=new Button(" OK "):  , c  d( I! a2 `3 ^5 s7 Q: q# f4 t
           button.setBounds(280,200,100,20);  
8 Z! t1 O7 g2 r  @5 s           button.addActionListener(this);  ) f7 h3 e7 b" y  r" S: L3 H+ o; O
           label=new Label();  
; R6 T0 r$ h4 _           label.setBounds(260,100,200,20);  " m, N- U/ }9 J
           add(button);  
# H! ~" L3 f5 K3 X2 D' v           add(label);  * e' O" ~- H3 s) U$ z
         }  
. `9 D- c& d! |; y( B       public void actionPerformed(ActionEvent e){  
( [" Q8 l6 k- c* r7 W           Object source=e.getSource();  9 q8 n! h( o6 r
           if(source==button){  3 F4 n7 k2 Y: L2 I3 m+ G
             label.setText(" It is a example !");  
7 J! h7 c0 \1 k: S8 k% M# g: {           }  
2 T  T4 ?( Y9 |, O+ x( [         }  
: W: Y" s% P& S. h, H0 J, q      }  
& y" ~8 R( L  a8 {1 X9 R; l
$ }/ {5 i" m, g1 z: \/ ~, H---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  8 d6 c/ }; {4 e0 c  I/ G6 ^

: z  p5 M) D& x# @---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  . Q! K- |  d4 @, x5 M
6 w2 h6 D( b; _# p! s* I9 U
---- 2. Java 中 的 发 声 提 示  
1 Q/ V1 j$ D1 Z" k, V
: h5 Q5 H. w# ?+ `6 q# X---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  " k' c! U& H2 E" Y3 f
7 `) W+ y- @8 s) K9 @
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
) \: @, {8 G/ C+ l( Q% r3 V1 e8 I8 w
       AudioClip audio;  
/ L! N; o* j, s; O         audio=getAudioClip(getCodeBase(),"Hi.au");  
  \' \% S6 v9 y% G/ `$ L0 Z/ M         audio.play();  ! Y; x5 u- V1 t! Z& r# l1 o# r
- G$ t+ O7 J( F8 S( f2 h* y
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
& E8 f0 [$ E, c3 J& f# C够 被 调 用 的 。  
- q. f5 T2 k4 `; R' D$ ~2 E7 A& k1 E! E
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
% s- @2 A3 d" A
" B2 R- s5 S( T/ u6 e; ^/ O$ r/ T& d---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  9 i! p& ]8 z$ |

" H* D6 p" R6 H---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
1 ^  J# Q: m4 o( G( b3 d- X3 ~5 `- Z3 C0 x- C% C6 y
---- 程 序 如 下:  0 ]. A3 H6 z4 C, N9 S) |

+ K0 o; j7 l( E 服 务 器:  
* ]: q) \: W$ [* r! A9 wimport java.util.*;  
+ a) R- L7 t  Eimport java.io.*;  & v6 J" z9 y. \
import java.net.*;  
8 y8 X8 c& j8 p/ M* Jimport java.awt.*;  % Z' }/ r! e+ b9 g

: L  N7 l4 r+ u  M4 Q- {public class ServerT{  
3 O) j# @1 P% M1 e# m2 G8 h  public static void main(String[] args){  ' b9 \+ K' _1 p+ C+ v
    Server server;  
6 n  T2 L  O$ z    String clientRequest;  3 d- u( @9 B9 Y& M
    boolean quit=false;  
- e9 \% u% F% _  W    server=new Server(8001);  
' i4 y+ N3 ?2 h6 _# j% W/ G- U    while(!quit){  
- ^1 a; V1 |8 O; G& z      DataInputStream keyboard=new DataInputStream(System.in);  
# {* o1 t) Y1 D8 T- J      try{  
! R1 w' D" i4 V; s        clientRequest=server.in.readLine();  
! Z& W& u) I' @7 Q  `- u* C7 S        if(clientRequest.trim().equals("CLOSE")){  
( u% W5 A4 c% l9 B9 Q          System.out.println("Client says: "+clientRequest);  ! P; D4 a5 J$ O+ y* k
          System.exit(1);  , t5 q1 E3 I# c4 d
        }  6 s2 ^0 {" M' F" t
        System.out.println("Client says: "+clientRequest);  
$ D9 n5 D7 f/ R! E- ~        server.out.println(keyboard.readLine());  . ]3 S  s0 |5 D, ?7 F7 x
       }catch(IOException e){  
6 x! s. A% }: a  A' C& _        System.out.println("IOException in server.in.readLine()"+e);  
) k: S) j! P, h, K) x        System.exit(1);  
# b8 B" O, _5 V# _  M, o* Y      }  
9 V2 }1 \4 j$ W4 Z5 l& Q6 d    }  
9 X0 _' a: K$ B, I  }  6 ^  J5 ]/ W( R' e) f, \0 \! l
}  
! F# u# }2 @5 H5 ~  l0 _class Server{  
% }0 b0 f/ z  E& ]' t5 {! ?' _  private ServerSocket server;  7 P5 C7 y! i* ~$ A4 `' V
  private Socket socket;  
" I# T* w6 \& d- P' K  R+ T  public DataInputStream in;  - N- h* V. |3 F; ~8 Q
  public PrintStream out;  , e5 h  z( ]# W
  public Server(int port){  
+ J! t* Y; }. w+ p' D    try{  
; W8 v% r5 v2 m4 u" P( G      server=new ServerSocket(port);  5 o9 d+ F4 B$ q5 X. |3 Y1 T( h
      System.out.println("\n  
- j. e4 F: \2 v*************************************************");  
0 f. [( Q$ J' w5 }; E5 a      System.out.println("\n @(              Version 1.00 97/12/30 ");  
! y7 T! W+ B6 i6 X- }      System.out.println(" Copyright (c) 1997  " H0 y# X/ ^% Z' _
              (Lui DongBing) All Rights Reserved.");  
3 i+ ^& x+ l/ z. S      System.out.println("\n  
. S1 M8 S$ z* f6 L: h& Y***************************************************");  
1 Z( A  d/ m2 b2 p9 q; T! A      System.out.println("\n Server is: \n "+server);    y4 c. p! _* b+ o  s
      socket=server.accept();  ! B4 g: f  q- v. w3 ?0 D
      for(int i=0;I < 260;i++){    // 发 声 提 示  
/ D" u" t2 t+ ~4 j        Toolkit.getDefaultToolkit().beep();  
5 Y, m- I, K1 E0 k  @/ ^6 L" v      }  6 m* u! w) g$ o' w* n
      System.out.println("\n Server is ready ! \n");  
; E6 U8 T* h9 Q( y' t      in=new DataInputStream(socket.getInputStream());  6 p# f0 A+ ~/ C7 Q' t9 L9 N
      out=new PrintStream(socket.getOutputStream());  
: h& d- I$ @. o# Y      out.println("We connect in "+new Date());  3 |4 v! q6 k+ Q7 T, I  k2 `
    }catch(IOException e){  
5 h* B9 [$ M: @: s0 `      System.out.println("Server is failied !");  
9 |* T5 n- k/ C5 N5 g8 I- F    }  
, k  u6 C6 I! u1 u) a  }  $ z. p. b0 y5 z9 m
}  
1 X) d# B5 D9 G5 m5 Y' A' {/ }9 j) o   7 A% C. H0 x/ _# j( k/ S
. h+ x& {1 K7 m6 E
客 户 机 :  ( K# a/ A# u6 Y: O' {7 R
import java.util.*;  
9 ?0 T, r' W. T" c7 u* vimport java.io.*;  
; {/ @! |1 m0 l. Fimport java.net.*;  
! v. a( M5 z2 U! B# g: J, U% }; d( P/ ^4 t( P4 k( i
public class ClientT{  2 a% v$ \9 L! b4 g+ t
  public static void main(String[] args){  
& L( q+ T1 z. ^4 x3 \    String welcome,response;  - u0 m. R0 v0 k
    Client client;  
3 B" _! c; }7 Q, h6 v    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  0 o. A, _. \" d/ U% v1 l2 \
    boolean Bye=false;  
2 K; D* X+ R3 H  @, t    while(!Bye){  % K2 t  w7 W8 X
    try{  # G; K& i7 P& w+ \3 p
      welcome=client.in.readLine();  
2 N$ N" ?1 H$ O. b* m      System.out.println(" Server says: "+welcome);  7 ]/ X/ u0 q: W. V$ J" E0 D
      client.out.println(keyboard.readLine());  8 j9 U8 X; J, n4 D' l3 v6 j& e
     }catch(IOException e){  ; X# x  Q% o; H8 y' ^" F) k
      System.out.println("\n The talk is CLOSED !");  
/ G( y* @4 M# ?# M* ]4 [5 b      System.exit(1);  6 P; `6 I3 y6 c+ g$ i) S/ y
    }  & Z4 }3 z: B3 X! ?" u
    }  1 v( \7 X# v( J" a/ R9 L
    try{  6 i6 P& s3 |  ~2 \: h, {
      Thread.sleep(200);  5 J9 k" E: ^; Q
    }catch(Exception e){  " W9 q  `( W7 i) k0 d' E/ a7 \
      System.out.println("It is a bug !");  
+ F) K9 r, S0 i( D/ Z6 f$ ^5 W- d/ R    }  - B- a* D# O0 }2 e
  }  
1 X' V) n/ B  K& M8 ?$ h4 f. V}  & ], }/ A8 B. _. b
class Client{  
4 ?4 _$ y& S8 z. m- j  public DataInputStream in;  
% A% T0 J/ b' E" B, X  public PrintStream out;  / L* G  W0 H  E5 A) }! m
  private Socket client;  9 W7 K0 H$ z8 j% g% e0 H
  public Client(String host,int port){  # A. p8 c+ F2 v5 R8 w/ q
    try{  , U4 j1 s8 u4 `% K+ ~2 t7 f0 G& w
      client=new Socket(host,port);  
/ f* m% ?: o( }      System.out.println("\n  
) w* U( s9 G6 [$ \* b' J' c***************************************************");  * \2 o8 h( |9 q; Y% v! y7 B
      System.out.println("\n @(               Version 1.00 97/12/30 ");  5 }2 L. B( ]! u$ V
      System.out.println(" Copyright (c) 1997  / X  J( I6 B" R
          (Lui DongBing) All Rights Reserved.");  
: I# K# x( J4 Q1 W/ n      System.out.println("\n  : L" P4 n! X+ @% s
**************************************************");  $ T# M$ A3 I0 z4 L6 z
      System.out.println("\n Client socket:"+client);  
8 W5 _7 j6 W; ^" j, t* c      System.out.println("\n Client is ready ! \n");  
+ Y+ E* ~- Q* _, _  t2 y- A      out=new PrintStream(client.getOutputStream());  & Y- L( K5 q, I+ Q' v: Y
      in=new DataInputStream(client.getInputStream());  ( [) b9 ?0 ^/ b3 k( i
     }catch(IOException e){  
8 N. F$ r8 Q! B7 F8 p4 l; p! i      System.out.println("\n IOException !\n"+e);  
: m3 z8 I4 E9 j3 {  b( C      System.exit(1);  
. X& N0 `" e! _" _1 {    }  6 u2 m% F" A2 e
  }  $ x) N/ u; ]% `! ^
}
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
如果我没给你翅膀,你要学会用理想去飞翔!!!

33

主题

10

听众

1691

积分

升级  69.1%

  • TA的每日心情
    开心
    2014-7-8 08:29
  • 签到天数: 201 天

    [LV.7]常住居民III

    发帖功臣 新人进步奖

    群组PLC和单片机

    群组2012第三期美赛培训

    群组MCM优秀论文解析专题

    群组沈阳理工应用技术学院

    群组学术交流B

    回复

    使用道具 举报

    zq1987884        

    0

    主题

    3

    听众

    19

    积分

    升级  14.74%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    wangyu249        

    1

    主题

    3

    听众

    54

    积分

    升级  51.58%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-13 22:13 , Processed in 0.774500 second(s), 70 queries .

    回顶部