QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  $ m- F- t; y1 h8 ?

0 d6 t4 ?7 {6 I---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
, B9 s- Q% C- ^6 P
6 R6 H& ~! L( r6 N7 ]2 c---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
% W6 s5 t7 Z  }; t- D7 i- CApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  1 y) Z* H. b* ^$ |: A/ o9 j- V
" S% Z8 R4 l7 y7 B2 m" u; Y& T
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
& b2 p6 U" o' c* _0 {: Y; _; N4 C! n3 v& h, b4 a
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
0 b" k. Y# x# t- `) V3 j3 U
, i- z) f$ D- j+ {: L% ~---- 例 程 如 下:  
7 [* U/ m) E6 C  i  j8 A: L: O/ W; N+ R# e- E3 b
      import java.applet.*;    e7 w& U2 v! U
      import java.awt.*;  . q& R; T, `9 [1 V  k
      import java.awt.event.*;  
5 ?; N1 u- p; \8 e% h   
: g1 F& r$ |. ~  j4 n. b/ n0 D
      public class Example extends Applet implements  
) J8 b, L5 t5 M3 f+ m* d                       ActionListener{ //          public static void main(String[] args){  
2 s# i  I4 Y$ p' j8 |, F" }           Frame win=new Frame("Example");  5 S6 e& a1 t8 i' t/ k4 F, U2 D
           Example example=new Example();  ( D! x# j$ L" g7 T
           win.add("enter", example);  
. n0 f: w1 I1 R           example.init();             //            win.setSize(600,360);  5 [; k3 s, u/ ^8 Z7 ^
           win.setVisible(true);  1 F( j3 w' A3 R1 r$ L; A, [9 C
         }  
& ?6 e+ j3 F- X# c7 Y( M      public void init(){                        //            Button button;  
0 N4 x; c0 S+ [, }           Label  label;  
  D8 c; C+ V" ~9 G5 E( B           button=new Button(" OK "):  8 S' r, a; Q6 m  X/ ?
           button.setBounds(280,200,100,20);  
+ U! ]- [6 @0 s  l; \           button.addActionListener(this);  
$ Z$ ?/ C7 N  i7 |; |& u( M           label=new Label();  
9 m, r6 A4 [& B6 A4 O4 u           label.setBounds(260,100,200,20);  
9 G/ c( x/ V: Q. w# v           add(button);  
3 c7 V9 {( T9 o  R6 @           add(label);  ' L$ M# T0 f1 v! ~
         }    t8 t( I: y6 {
       public void actionPerformed(ActionEvent e){  $ B3 y9 h1 W1 m7 a( g9 @% Y
           Object source=e.getSource();  $ F, @6 Z% Q1 f' H" w1 u
           if(source==button){  7 e" }5 u$ }8 f: {3 q, ~! H& R5 {
             label.setText(" It is a example !");  
" K4 I. M  t% s' l% G4 [8 }           }  
6 w0 ?& N; \) J         }  
2 e; O$ X, l* G  L: p      }  
+ t' h2 R" V: o  R! R
5 @* J, X2 ~8 b3 o# f+ H! I! e  B---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  ; [! V/ L% L; H, k. f/ I& M
; \- @) I' k  `2 _! U4 r7 V  ^
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
$ b' G$ d" {3 Q9 ~* z1 r* D3 |
3 }7 ~' x$ K; a0 Y, F) {7 ~$ g- U8 v---- 2. Java 中 的 发 声 提 示  
% k: z+ w# ~5 ]6 z/ w
5 x( X% K% p: D9 T---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  6 F" D( u  G6 Q& y4 q3 S( R9 D

! c( @) Q! Q  ]# ^4 N' a0 B6 c---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
9 Q! v* p; s0 [4 J; m9 w" ], r. p. i3 Y! W5 h5 [
       AudioClip audio;  
4 H' M6 G) E. U         audio=getAudioClip(getCodeBase(),"Hi.au");  2 Z2 K4 y: f' ?# D/ D9 t0 w9 z, q
         audio.play();  / _' L% ^5 |5 o3 m' h' t. _

' N. x/ G+ u9 f0 D" C/ C  y+ W---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  0 N  ~9 r9 W( Q( o3 k! A5 X' r; d
够 被 调 用 的 。  
; w% e# d9 F$ x
6 B( T$ m7 y# R4 E) l8 i& C---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
! k  _, E" i/ E, s
0 ^$ g( M5 M4 P) x  n---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
! p$ T2 v* a4 C3 [  Y) A5 ?+ E: ~/ v5 Z! b7 H% |& }! u
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
, u( S8 s; y8 V9 z9 V1 `% L$ ^* Q
---- 程 序 如 下:  
$ ^* _1 O+ S7 I) T/ _
# z8 w7 Q  s: t% U, x" | 服 务 器:  ! F) E- l7 Q9 p& N0 H7 R
import java.util.*;  # v! @2 ^# V9 M2 o6 [# F
import java.io.*;  . B8 \9 ?5 h+ m
import java.net.*;  " W' c& f1 N6 K; A: x
import java.awt.*;  6 b. E6 A% p+ z' s( k; ^$ ~$ h
+ E2 N* x2 @( s3 t$ I* M6 M6 o4 [. g
public class ServerT{  " @8 |! Q2 k; Q, `8 f' I9 ?
  public static void main(String[] args){  
+ S) Z# n) v* {3 I- Q* U    Server server;  9 v( E5 Z, A" k
    String clientRequest;  
  X- E" Z1 C6 o& V+ z    boolean quit=false;  
3 @1 F' `- C# f  ~6 y    server=new Server(8001);  ! q6 S$ Y" b. z3 L9 a& s5 b
    while(!quit){  
1 O( s; D1 ]" N      DataInputStream keyboard=new DataInputStream(System.in);  
/ P' V4 l& H: K9 v$ y# u# u4 W      try{  ; C  O' ^2 x% O# Y5 `5 ^
        clientRequest=server.in.readLine();  
: w0 b7 x0 i. x5 H3 Q: Y- k# A        if(clientRequest.trim().equals("CLOSE")){  : H* A) v+ ~& @/ x/ J
          System.out.println("Client says: "+clientRequest);  % t/ r! i: b3 s9 R2 i4 {2 _5 q  g
          System.exit(1);  4 g8 v: s& ]+ X. y) p
        }  
9 p8 S! c+ L6 }9 p5 i, f; [        System.out.println("Client says: "+clientRequest);  
6 T% i, d. I  B8 C/ B- Z        server.out.println(keyboard.readLine());  
  O; A9 `! n3 Q0 @0 x       }catch(IOException e){  5 Y& h9 o; d: A% P7 o3 R! O0 h
        System.out.println("IOException in server.in.readLine()"+e);  # L' b  X: h* p& E
        System.exit(1);  ) h( Z* a2 `- `7 h! j7 m- N/ y, y
      }  
" `8 \; m" T' R( F5 |    }  8 I, ]" x$ M( o+ B% S
  }  
# I- N: Z0 {6 k8 @2 e- K6 [# ]}  * ~8 m+ v, E$ o2 C0 q0 y* Y2 O& H
class Server{  
  g- i" B' q8 w5 M# P# b# e+ j; b  private ServerSocket server;  
* v. l% Y( A: `( e9 R2 C  private Socket socket;  " w* b0 M3 J. V7 {, Q( l
  public DataInputStream in;  . `4 c6 o) C' Y, z/ U+ N
  public PrintStream out;  
0 T0 u) Y1 z, S' d6 h' Y  public Server(int port){  ' G3 V/ y+ u$ q, G: W+ Z
    try{  
) T0 n. q% F4 |  c      server=new ServerSocket(port);  - T% L; _9 n; s. B7 g8 |2 \
      System.out.println("\n  
/ _# E% A4 s: r: }$ s*************************************************");  
6 B: f, @  Z6 W$ s* T4 _/ S      System.out.println("\n @(              Version 1.00 97/12/30 ");  
7 l) n% q' _7 M4 S9 V      System.out.println(" Copyright (c) 1997  ! ]( J' T& n4 }" K6 q' U
              (Lui DongBing) All Rights Reserved.");  2 A1 Z; ?' p$ A5 |1 B3 n. [6 S6 V
      System.out.println("\n  
4 r" V0 e# ~4 y( E$ P1 f( y) `# M***************************************************");  
) k7 ?: ?3 r& ?8 C7 J      System.out.println("\n Server is: \n "+server);  - r; o! z) L: p. u( C
      socket=server.accept();  ! W6 D, y! s* x+ H
      for(int i=0;I < 260;i++){    // 发 声 提 示  1 j7 G+ H9 k4 m9 F
        Toolkit.getDefaultToolkit().beep();  
; T" H6 `0 T% d2 K' c! X/ K, f6 a      }  $ R6 g9 g+ w" _, d; Q
      System.out.println("\n Server is ready ! \n");  
6 }7 j" }  a" ^! V9 R* t      in=new DataInputStream(socket.getInputStream());  ! T6 f4 I1 J" K: I, T4 L) b1 C7 [
      out=new PrintStream(socket.getOutputStream());  5 G* a5 z1 `& e7 I! `0 i
      out.println("We connect in "+new Date());  # @& }% e3 O. V/ Q# x. E
    }catch(IOException e){  8 c7 }% N, T! P, s
      System.out.println("Server is failied !");  ) P9 G" Y, f) h! V9 Y
    }  
, T% v0 F; |* q# [  q( f5 Q$ M6 ?( W  }    J, W% d2 h' t# |" l
}  
& {: Q- j: g; `! [5 K# x$ W! i! [   
) B* C, Q& S1 ^8 i/ H/ q" a
' ]: q6 v3 ?# f. L4 ?5 h) Z 客 户 机 :  7 O; R& ~0 _4 G: j2 q
import java.util.*;  
9 b. B# S. O, W7 T6 L2 Uimport java.io.*;  
( W3 T6 i0 g* k9 g+ c( M. Himport java.net.*;  
& E7 |1 @) E1 @: Q9 R' Z4 d$ R+ {) {& G( p! `+ n8 M
public class ClientT{  3 g, c: b# ]/ r* w4 J. T! h
  public static void main(String[] args){  
* k$ C. s1 n/ D7 ~( S    String welcome,response;  
% Z' C+ K" I4 }( N! S  Q/ Y# p; g' T    Client client;  
7 I& B- y( q, |. s! ~8 m    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
, L0 k/ T( T! ]9 Z' P  V2 B. R    boolean Bye=false;  8 L- |9 L& \" S4 e5 }* g9 T: P' J
    while(!Bye){  
2 I+ v) A9 ]* z) N1 }; `2 ^" ?    try{  
7 h4 f. u  y1 z      welcome=client.in.readLine();  
5 `( U0 A+ q* r' u; ]. y6 L, p" m      System.out.println(" Server says: "+welcome);  4 r% Q7 m1 H6 c( O/ W( N
      client.out.println(keyboard.readLine());  
7 o; ]% J1 p- {! @6 E. B: i' h" X9 u     }catch(IOException e){  
! O( m* W  n6 G  V) [( P: b      System.out.println("\n The talk is CLOSED !");  ! B4 K! R2 p+ P- R0 W% l
      System.exit(1);  
5 n0 j1 V' X' I    }  0 U0 b6 t% k. i" `, D
    }  
8 n! B9 F6 Z# X; X0 J8 z    try{  - g! ~' N4 W+ d& _% Q8 ?; d
      Thread.sleep(200);  1 z& t) M+ _  g7 ^
    }catch(Exception e){  
- ?& d0 f. `; c3 Y      System.out.println("It is a bug !");  4 `/ P6 r4 c& ]; g! h9 P
    }  
0 d/ w4 H- W% V0 ?# S7 W  }    Z$ Y. n# v3 P& u3 g9 |8 c
}  - g: A- W1 Y( U; m& k8 |8 j
class Client{  ) q) d5 N5 A1 S1 ?  f
  public DataInputStream in;  8 L4 k; o  E; e  ?+ Q) j
  public PrintStream out;  0 Y$ n4 M" ^$ E
  private Socket client;  7 {1 X+ S# Y5 Z, B; V( ?9 ~* B
  public Client(String host,int port){  : a8 X7 J6 t$ ^/ b/ [: G" `
    try{  
( O% N+ ?$ E6 m      client=new Socket(host,port);  
1 T9 x4 x! Z$ F: ]0 b      System.out.println("\n  0 P5 x5 k2 D; H2 L; H
***************************************************");  3 @) f5 k/ v/ ^/ f. T0 ^
      System.out.println("\n @(               Version 1.00 97/12/30 ");  , K5 R  O7 Y# Q; T" N
      System.out.println(" Copyright (c) 1997  ; {1 ]% ^- Y4 p
          (Lui DongBing) All Rights Reserved.");  : _2 d7 a# K" Q( G
      System.out.println("\n  ) e5 I1 T1 W, @
**************************************************");  # Y! z$ T# r( z  v/ C  d
      System.out.println("\n Client socket:"+client);  
; ]: ?4 _2 Y6 G7 F8 f      System.out.println("\n Client is ready ! \n");  
+ C+ h6 C( K  j& I7 c% n      out=new PrintStream(client.getOutputStream());  
% d( S& }  H- r- @( O      in=new DataInputStream(client.getInputStream());  ! J! m$ j3 x! M0 d' ?; A( x
     }catch(IOException e){  
- |! @1 ?2 J! }0 P5 c      System.out.println("\n IOException !\n"+e);  8 d7 e- g3 W- c' M* f0 s2 f2 @
      System.exit(1);  
  z0 Z' Z; `" ]) ]* ~    }  
6 g0 r) O# C7 d3 v2 y2 F- e  }  * e# u4 z  v* r- g1 W0 v
}
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-4-16 22:34 , Processed in 0.444696 second(s), 70 queries .

    回顶部