QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
5 \! V: a6 i( M2 A" ~) _7 c$ ^7 @4 M4 d
9 M8 {9 d, u$ }8 X2 W) O---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
. u6 }, P0 R0 E( A
  J5 M2 U3 i" h, k( v7 S% e; Q5 G---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  8 Y. ?3 T* R; D1 N) C
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。    W9 o/ j+ B6 Z1 T" @
0 P" d0 T" A, y! r
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  4 C, P1 N0 m* q  u0 V6 l

4 [  B3 d9 L' C8 z2 t& Z0 f---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
4 c% k; J" A& |& W: C/ Q& F( M# p* @: s* T" h8 \' S
---- 例 程 如 下:  
. I4 }0 J  i) A5 U/ R  _4 E! ?4 m8 w9 f' f+ d8 `
      import java.applet.*;  
- G6 g( U, y! ^9 ]( T8 H# e& N      import java.awt.*;  
# k3 _7 q3 z0 i" |( b      import java.awt.event.*;  . c, W7 N! w% Q% b
   # Q" h' |6 e# D4 X. T/ g

, c8 t: ]. b% Z- E3 n1 ^8 k      public class Example extends Applet implements  
! A/ ?% G, t7 A8 k  U                       ActionListener{ //          public static void main(String[] args){  
3 R6 l0 F, ^9 Q7 Z' K$ a) a9 f           Frame win=new Frame("Example");  
( V6 {5 @0 q# i8 r6 I           Example example=new Example();  
  ~) c: [$ s. n* r           win.add("enter", example);  
  ?2 ^. B( F1 l4 @, L           example.init();             //            win.setSize(600,360);  
: f3 K  L; w% s, t8 @- e# P4 @3 ~9 Z           win.setVisible(true);  
8 d  t! c* O" [" v" Q* \         }  
! R" v" j, k$ F6 \! J' f; r4 E      public void init(){                        //            Button button;  
8 h7 C( x9 R5 E; h- U           Label  label;  
$ u' A# x# W, x4 I: z: K, N# Q0 i           button=new Button(" OK "):  
; b. ^* u/ K$ R5 K9 f7 r% i           button.setBounds(280,200,100,20);  
6 d& a4 d5 |$ y           button.addActionListener(this);  : p5 [& v- M8 i
           label=new Label();  ; R) i) v& [3 w. T1 T
           label.setBounds(260,100,200,20);  
# L9 g* u* x( e! K3 [: @* x           add(button);  / U+ h( l; Y7 G, t/ ]4 r- p! a
           add(label);  - Z+ H0 j  J1 z8 P5 n- a
         }  ! v3 j% N; g1 x3 ~- s
       public void actionPerformed(ActionEvent e){  * w: L5 w: S& g" T3 ~- m
           Object source=e.getSource();  3 ^: x, e9 i& D/ l( g
           if(source==button){  ; M' n1 N4 h9 F2 L; }" G; c
             label.setText(" It is a example !");  4 V5 v: K2 ~1 V
           }  
' ?) F1 U, ^0 h, M! [0 h         }  
0 \, j8 V+ f& ~' L, M7 p4 t      }  
/ ~: C3 f% U; M' a0 a' Q& N7 Y, X5 v1 r+ X, q9 ~
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
$ a  z9 x+ ]! p" r1 w" M3 v( f; r4 d. B) J& _$ X2 L; e& w
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
, `0 y' X7 M2 H6 a: k8 d; R: N" c) H: j3 [( K0 T$ m5 j
---- 2. Java 中 的 发 声 提 示  
2 L* z6 t! J/ ]4 i7 M; M7 [: Q
, ~: g& J; Q0 g0 w4 j---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
5 W' ?5 r; D6 N: ?7 d
9 [) Z- Q3 M& m3 F" E1 @+ T! G---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  8 l7 w# q( _& q' D3 q
9 T+ t& y- w$ f4 l' m. ]
       AudioClip audio;  6 J3 t; V4 j6 W8 v: R& N1 Y
         audio=getAudioClip(getCodeBase(),"Hi.au");  
' u. R1 C- y9 d1 a         audio.play();  $ x0 A5 D) ?6 n/ j  p
( K: o  V0 Z& ^5 A! i) D
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  ) F0 K  m5 t5 |- k! x! n* W
够 被 调 用 的 。  9 ]8 _8 L1 H0 o7 j. Y
3 a3 a5 U7 s' B% v. ^0 S: n: q3 W
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  * C+ X3 T0 Z5 n. V
5 U. [# b+ N/ q3 k( v
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
! d" |" q( c5 n0 I/ ~' _/ [/ ?; x/ O- t7 J) |' K- n% O
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
7 F" O7 U5 u; u5 v# P2 e- M  o) G) \% B) E& O
---- 程 序 如 下:  ! W' z+ e; |! w" w2 n" c. `  |

- S9 O1 o  k: Q. p- }( m9 K) s 服 务 器:  
& Z; a- A1 I! Wimport java.util.*;  
( F" C* W& b( u( T! F, N/ i+ \  Eimport java.io.*;  - E4 t) R: h1 s( Z' W" }
import java.net.*;  
: n: a0 c3 B: `import java.awt.*;  ! j5 S! y* M2 {$ i, ?, j5 |0 w

. h4 H/ ]3 g$ jpublic class ServerT{  ' g5 ?% A1 f) B* ~
  public static void main(String[] args){  8 t% D/ K! `$ |
    Server server;  
( k& ?5 H" z" i: W1 p3 K    String clientRequest;  5 |  m, y# K, M& U
    boolean quit=false;  
$ ~3 t4 ?+ ~, {    server=new Server(8001);  - h' U5 a. h7 t/ ~8 F0 A( r
    while(!quit){  ' @8 {2 w1 M+ h7 e1 }  n/ _0 h
      DataInputStream keyboard=new DataInputStream(System.in);  0 v2 ?: k! h/ K9 P4 [
      try{  
* T6 {0 [4 L8 `        clientRequest=server.in.readLine();  0 S- p$ _. r& s/ b) p
        if(clientRequest.trim().equals("CLOSE")){  
! v: L6 a  N7 z  S/ P          System.out.println("Client says: "+clientRequest);  & w& H: A/ F& Y; q3 q2 c0 o: ?& ]) O
          System.exit(1);  ; O7 R8 i. O  q7 @% }* t( M' f
        }  
1 T: d+ c! X# ~, D1 p# G        System.out.println("Client says: "+clientRequest);  
2 E0 ]* Q$ _7 N        server.out.println(keyboard.readLine());  6 h) o# r7 m$ W) {6 K. p2 D
       }catch(IOException e){  
! r4 }8 Y: C+ u' {" J6 B        System.out.println("IOException in server.in.readLine()"+e);  1 o$ e9 p; q' I# f7 i& s
        System.exit(1);  
4 }* P4 K0 N( k# @  G. W      }  
+ e' b) k, Z& X5 [% Q: E    }  7 {% H( O7 A' X
  }  
; R. r7 M1 N6 U0 a. l! Z0 k; b) F}  
! t' \& q8 s* F( z3 Qclass Server{  4 F1 P8 c! u1 W! k+ S5 F2 l, w+ G
  private ServerSocket server;  
# {: R9 R  E( V! H0 c# f  private Socket socket;  
5 A+ ~% K8 [: L4 j! `  public DataInputStream in;  6 ]( T$ A# W* X' _" h
  public PrintStream out;  2 j  v9 l' Q9 n7 b# H3 ^
  public Server(int port){  
, K+ @& d( R' P4 X% T, S1 N    try{  4 n6 S- e: u$ c1 Q* Q/ |
      server=new ServerSocket(port);  
+ I4 ]0 E, m' y* w( l0 q, s8 s      System.out.println("\n  
) V+ D( V* ]% ~, }*************************************************");  
% U; M; ]6 C1 d5 H, J: d      System.out.println("\n @(              Version 1.00 97/12/30 ");  
3 c6 w4 }1 g$ e, O# M      System.out.println(" Copyright (c) 1997  
+ r- N) k9 b7 d" N2 R& ]( R0 [              (Lui DongBing) All Rights Reserved.");  
" |  N3 E& F( G; d7 H8 r      System.out.println("\n  
1 E- g% p! F% c***************************************************");  
- x6 d, h: O2 I      System.out.println("\n Server is: \n "+server);  $ W" W3 t6 A0 q1 s7 R
      socket=server.accept();  
5 }) K. ]* ]: V8 ~3 _% W( b, T2 |      for(int i=0;I < 260;i++){    // 发 声 提 示  + d$ G+ c0 \/ f4 d6 y5 ~
        Toolkit.getDefaultToolkit().beep();  
) a. r; E7 n9 `8 R      }  
$ c* [8 H/ @; k. `; k      System.out.println("\n Server is ready ! \n");  
* g, \% _" r. f3 G( H      in=new DataInputStream(socket.getInputStream());  
% b0 N) H) f5 d$ N! g      out=new PrintStream(socket.getOutputStream());  
8 J/ p* ~2 Q% n* ]) e8 q1 ]      out.println("We connect in "+new Date());  9 L1 P! @4 }( x* p% i
    }catch(IOException e){  
: J$ \) n9 g$ Q; _& ]% A! a! W+ ?" J      System.out.println("Server is failied !");  9 ?  J+ [5 @3 [# L- z
    }  
  @- V8 G3 d4 \0 i  O% V  }  
" n( l+ o- K9 ~}  1 ]* X% V' D! m, N$ q! c
   : G: p. \+ n# G3 e& K6 @% G6 ^
) p5 ?6 @/ B9 k) m# D8 p
客 户 机 :  % O% \" r* P% E/ n- o) M9 S
import java.util.*;  . k, @6 E( I& ~
import java.io.*;  
& C  a. U. ^1 Uimport java.net.*;  
- |2 v2 J6 j6 ?& P- b. M$ U8 {# t+ H; x2 O6 t7 B6 n' @
public class ClientT{  
) S! `% X# ~0 G7 f7 W# Y: @  public static void main(String[] args){  . A% n% u; l" B
    String welcome,response;  + P& Z3 y: A" Z! B
    Client client;  
- e- s3 A' c7 Y( T+ w) D- G1 |    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
& r& [: K. S+ Z" k    boolean Bye=false;  # q/ U' [1 ]0 D; C8 ]
    while(!Bye){  
$ Q0 t: |5 B# I9 }$ L1 C    try{  9 G/ d" I/ f1 C
      welcome=client.in.readLine();  
4 T; x5 u3 V* ~( V      System.out.println(" Server says: "+welcome);  
3 _1 P+ m1 Q$ \1 N0 z      client.out.println(keyboard.readLine());  ' j- V+ O* V8 S, w  o
     }catch(IOException e){  
& S( |- E9 V- X( u( L      System.out.println("\n The talk is CLOSED !");  5 G. D: M' H4 \- Z/ [
      System.exit(1);  + T: K( w' r4 H- o
    }  
9 o" l& g& L$ a+ t% R    }  
, Z( x% I1 ]/ f  A: g0 y  E& t9 v    try{  1 e( A* i' ~6 Y! h
      Thread.sleep(200);  4 E, H5 m/ G0 R' a
    }catch(Exception e){  
8 p/ L) Z( d5 O. T# `. c3 N, N' S      System.out.println("It is a bug !");  ; P' T2 ?7 c8 H
    }  6 |* X1 n2 S( _! B/ B0 ^
  }  , i7 ]& P' p  d9 d
}  
) h) D9 I1 {1 ?' s  m" \8 Tclass Client{  
9 A( R6 L- r' l6 {9 Y  public DataInputStream in;  
4 G4 R4 p( M( {( H* k  public PrintStream out;  
# K+ J- t  Z8 V' u  private Socket client;  ! D2 p0 v3 p* _4 ~; i8 g
  public Client(String host,int port){  
7 U* ^! R$ y, I9 O( R2 H    try{  
( M* ]- w$ d8 I      client=new Socket(host,port);  * U! V( X* ?  p+ C
      System.out.println("\n  + m$ d: Y2 A& y( G5 ?* g. |
***************************************************");  ' E7 Y% ]( x! s! t0 U8 x
      System.out.println("\n @(               Version 1.00 97/12/30 ");  % f7 f  D: d8 n- Z# r- E  L/ }. k
      System.out.println(" Copyright (c) 1997  
* @4 d* k2 l0 i          (Lui DongBing) All Rights Reserved.");  & M4 W* b9 u- ^/ b! }4 W
      System.out.println("\n  
9 ^  K6 K0 R. G# l7 l. J+ H**************************************************");  
4 I. _3 b% ~7 M* I      System.out.println("\n Client socket:"+client);  ; M/ a! x8 p3 }8 `$ v8 G; J( }
      System.out.println("\n Client is ready ! \n");  
( [1 b+ t- w) g# l' T6 D* ^      out=new PrintStream(client.getOutputStream());  1 L/ e0 c8 o  E2 \; E  @
      in=new DataInputStream(client.getInputStream());  ' k$ G" F8 B0 h6 {
     }catch(IOException e){  ' x6 L9 M8 I7 h1 m3 P) p8 Y- v
      System.out.println("\n IOException !\n"+e);  5 B" {$ e/ g: |, B) I3 _: Z
      System.exit(1);  
! d* i7 |' H* k1 S4 A: d& H- A& Y    }  
; X& l7 O# {8 [; E2 }* s' ]. V, J  }  
% h3 \1 k4 Y# q6 Y/ L7 I}
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-7-27 07:16 , Processed in 0.387487 second(s), 70 queries .

    回顶部