QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  # u+ }1 e9 h+ k. r  q( q
6 G! s' S& E& o0 Z  _; D
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
, z% L% H7 N1 V& o6 G- j
: o8 P3 _1 X) f4 a1 ^  L---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
4 b4 Z' W% g# t8 UApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  9 v0 V8 K& @* f

* R5 e! @! r; [+ f" R---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  8 ~$ U5 M: y7 w% v8 @% I' }/ ?
9 J; h; T9 i  n, F
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  ' W/ t6 `6 R  F$ M
1 q8 K6 r$ n9 Z
---- 例 程 如 下:  9 @# w- x9 H9 @+ t& N; f) A
% F( H. |3 a0 @7 h, y
      import java.applet.*;    I/ Y) h" e1 u, \" F9 v: Y
      import java.awt.*;  
4 W/ B9 W3 g7 J4 Q4 S$ U      import java.awt.event.*;  
+ x) k. Y7 |! k2 L7 U/ E   # f* `. t) V; l  G+ f0 ?! N
! j- v3 M! E6 U! d+ W, _
      public class Example extends Applet implements  9 L9 l2 e3 E7 n7 N- V
                       ActionListener{ //          public static void main(String[] args){  
$ m4 F/ K+ I9 V5 d7 I           Frame win=new Frame("Example");  
% [! d( ?9 W! ?+ G6 P           Example example=new Example();  % P# ?6 |1 |# W
           win.add("enter", example);  7 T" r/ A$ a" I$ T- ^" X
           example.init();             //            win.setSize(600,360);  
& u+ I* U* {8 f7 A0 [% h, p           win.setVisible(true);  
( d' ?6 ~) ]3 {- P. q         }  ' _; b6 k: _* K" K& S0 ?
      public void init(){                        //            Button button;  6 F+ D  h  H7 K- V0 o' u9 C3 f
           Label  label;  
, F# K6 j* e$ N6 B           button=new Button(" OK "):  
$ {: a0 D! j" l- g" n4 _9 \; c           button.setBounds(280,200,100,20);  % ?3 d- _$ s  O  Z
           button.addActionListener(this);  # q: J% z# f9 q% S
           label=new Label();  ( g9 \, t7 R1 m' s+ S- Q
           label.setBounds(260,100,200,20);  ; {1 i6 b* r2 L) d: t
           add(button);  
, p0 C8 D5 `. H$ l$ z  ?+ R           add(label);  
8 o) }, D; d) r, Q" A         }  - H0 Y- `+ w; }9 s- u5 j
       public void actionPerformed(ActionEvent e){  ; u$ t2 W( n# {: m: h# {+ Z
           Object source=e.getSource();  & H. x5 w: V' i. S( ]" e0 E; ^
           if(source==button){  
! \) k# t, p7 I+ b# Y) Z4 t             label.setText(" It is a example !");  1 I/ r2 K0 c/ s3 a* a3 T8 p' \
           }  0 m/ ]9 T( s9 ]1 i. H* C( P7 P
         }  1 T! m; f/ f* J6 B
      }  
; k2 J( I3 H' n  k' c& b$ K% b7 H2 Q, ?6 H* m6 p  y
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  - G2 e: c/ D) G- l

- g3 _/ R/ B8 R1 `3 z' X7 F---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
# D9 w+ U! }8 ?$ G: R( M5 l
+ {4 {# f0 a$ |---- 2. Java 中 的 发 声 提 示  9 e! V  G6 A3 |; I, n* K
, `  n7 n* u$ Z
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
5 {2 B8 S$ Q* ]$ {# e: u6 k- q, [9 Q8 l  K
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  $ k' V0 b! |" d: C" G

/ ?' o3 F% S5 W       AudioClip audio;  
5 J# ~1 F" T" y. A% ]         audio=getAudioClip(getCodeBase(),"Hi.au");  $ E" H; n& F; b, L: H  J
         audio.play();  
7 s; Y) s" r$ C1 j& f3 R- r- V# D4 L# m% |' G
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  # w2 A  r0 u4 ~4 j! u
够 被 调 用 的 。  ! C  j' {' U% p3 N  x7 r4 B; _. L  n
. [9 e9 K7 z% {- A9 O* k
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
  g- ?, T* u6 Y* ]
/ L( _5 s$ N) ^* Y* P$ {---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  ( h. q' u" q! c9 I

/ L1 T9 q# ?; m. A---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
  q+ O# o1 u8 x0 ~+ G( t6 H0 V, M+ k. u* S+ _0 a0 I3 l- k; h
---- 程 序 如 下:  
3 O0 |, h* J" F1 A# A  N! e$ x. M+ m, \7 s& v
服 务 器:  - v' d0 ^* J. v/ x! g- V9 _
import java.util.*;  
$ ?% m1 S$ `5 X9 C; D( zimport java.io.*;  
8 M! J1 ?; Q7 l" B* Cimport java.net.*;  
. T( v! P) U1 E5 l& gimport java.awt.*;  
5 {; {! R  Z1 i; `
5 U6 r( w# G3 |! p0 Kpublic class ServerT{  6 V0 K7 C) j  Y) u
  public static void main(String[] args){  
4 G, `* ?2 g! A% |, }    Server server;  
8 [( \3 ^" _- M7 r    String clientRequest;  
2 e: I9 D4 P$ e4 I0 m) y6 `    boolean quit=false;  
8 m% |7 ^$ C. {7 H    server=new Server(8001);  
% I% Z% J: W3 o0 t" Z2 I( @; H    while(!quit){  $ j( N; O) ~# |: M6 n: F
      DataInputStream keyboard=new DataInputStream(System.in);  
' P/ E7 p, ]% v( [. @$ Z. `+ G      try{  
! l& n' V/ b! d7 }. r/ Z) v        clientRequest=server.in.readLine();  
/ z6 U- N3 f/ q( k3 Y# K3 e# E        if(clientRequest.trim().equals("CLOSE")){  
3 W+ u5 V. r% O4 w1 o1 \* s% g          System.out.println("Client says: "+clientRequest);  , c! a2 u" _5 Q7 }3 B# ^( N
          System.exit(1);  3 P! {$ E& ^, c, J' @2 a5 _" z
        }  
) N) c: o: a. S- I! ~( K& c7 w# e4 k        System.out.println("Client says: "+clientRequest);  
# _  @9 B) S6 g- b3 I6 u9 V        server.out.println(keyboard.readLine());  6 G$ a% j5 p# ]4 ^5 j# a3 T
       }catch(IOException e){  
9 u1 X1 }" ~3 J7 A& t& k4 G8 ~        System.out.println("IOException in server.in.readLine()"+e);  6 ]" K+ B  s, a$ |" |% i8 J
        System.exit(1);  
- [# C5 H+ R  @5 X      }  
# W$ {6 P5 }: d& D6 ?    }  
1 Z8 S1 _- c# B3 |  }    j/ M, ]6 n5 r7 M/ K
}  : r8 ^: I# S6 R# i' w
class Server{  " k4 X2 `1 e' v( x
  private ServerSocket server;  " c4 F6 x9 z( B; F% a
  private Socket socket;  $ L1 M) z9 p2 Q/ }; D0 O2 V5 [& l
  public DataInputStream in;    i: d' n  g$ t: E  x$ D- E
  public PrintStream out;  + s' o, f+ r4 D# I
  public Server(int port){  6 u% c9 d4 L& ]" u
    try{  / z2 j. l1 M, {  T, B
      server=new ServerSocket(port);  / N6 C% W6 K6 o: ]
      System.out.println("\n  3 [+ m/ [+ T0 t; E5 a( u
*************************************************");  
; T$ d- C2 T( n( V9 |6 u. r, k/ \      System.out.println("\n @(              Version 1.00 97/12/30 ");  ) U: n/ t2 M3 x3 N
      System.out.println(" Copyright (c) 1997  
' D" |. U; S4 P              (Lui DongBing) All Rights Reserved.");  % u; v8 i5 Z% ?% ^+ O
      System.out.println("\n  - b* \  Q3 f6 Y
***************************************************");  
. u1 C! `% j1 t  s/ l7 `      System.out.println("\n Server is: \n "+server);  & w, P- U+ J0 G. }3 h$ x
      socket=server.accept();  ' n+ s5 }% o2 a% ?$ V8 V# O( \
      for(int i=0;I < 260;i++){    // 发 声 提 示  
$ P3 {/ D% f: R8 @        Toolkit.getDefaultToolkit().beep();  0 q# m2 J  @6 S  Y6 f
      }  
2 v) v" q9 X2 f  B% h# A. E. N  L      System.out.println("\n Server is ready ! \n");  
0 E8 o2 ]) D" D4 }      in=new DataInputStream(socket.getInputStream());  
# Z0 S1 o/ ~. E7 `* @( @      out=new PrintStream(socket.getOutputStream());  ) m4 u' Y: M. d/ C* `
      out.println("We connect in "+new Date());  
! p6 P9 u* k+ A% P    }catch(IOException e){  0 o* d3 ~5 ^0 E8 {' [
      System.out.println("Server is failied !");    C" N' e& @& V. G# U
    }  9 U% }9 P" `- k4 l3 |
  }  ! y9 I. U4 g, _. o+ U
}  ( X/ r  t6 C2 V) L% \3 [5 n: g1 N
   / c6 p$ B0 {4 O- A0 B
% O( z/ H0 j/ [
客 户 机 :  ; O1 L& {5 \, l3 k7 B
import java.util.*;  
2 ~" E) A! K0 T* `1 c& Himport java.io.*;    ^$ X# ]2 i+ Q4 r* R# W
import java.net.*;  ' H0 `6 ]# K) n+ W. c5 s! Y: h0 _
4 b/ |8 C7 w( m: a3 k
public class ClientT{  
. K3 G! I+ f- O  public static void main(String[] args){  3 o: p9 s4 |% R8 w8 ]* G
    String welcome,response;  
1 K: T: A5 l1 k+ m; H# g    Client client;  
/ B6 y- n0 j7 |  \    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
( n& {( F9 _6 Q* T1 v    boolean Bye=false;  
9 h: r% k7 ?6 G. x" V4 K, J    while(!Bye){  
, s% A& Y0 }8 ]4 d    try{  2 N1 z0 f) c+ F8 e! J
      welcome=client.in.readLine();  $ z1 }1 o# `+ Z9 t8 M
      System.out.println(" Server says: "+welcome);  ! G& N  O" }+ q5 X3 |# q: K* [
      client.out.println(keyboard.readLine());  ) m! g. }1 ]3 I* X# v8 C
     }catch(IOException e){  
1 Q) g$ `: V5 h; Q+ J      System.out.println("\n The talk is CLOSED !");  8 X. x  [7 ]5 A
      System.exit(1);  / l. i  ?; F8 E4 T
    }  ; b5 F$ T$ h: ?7 C9 b( \
    }  
3 Z- V3 r! ]" _7 x# n    try{  4 U& L. {+ I6 n, y/ r. j0 s
      Thread.sleep(200);  : P  e7 }  F2 \
    }catch(Exception e){  8 v- J& @. w' x( V) {
      System.out.println("It is a bug !");  5 K; T" {- g1 k) W( @) i" }: m) `
    }  6 C6 W2 i* ?8 M: @+ k6 G. g
  }  : G/ \' w9 |" p& \; X, _0 L" a
}  ! c- f' b. ^& a# F1 K' r3 b; ^
class Client{  - e! h- V0 A; H" P  {+ G# g- W8 T3 i
  public DataInputStream in;  
. g+ s7 _' r2 ~$ s  o  Y0 Y7 ~  public PrintStream out;  $ a& n& i) N/ d) F2 _
  private Socket client;  . z& d- i' b5 D
  public Client(String host,int port){  . n& W8 d9 u, e) c5 d# X
    try{  
. H( P0 w  G2 N! l      client=new Socket(host,port);  # G2 K; ^- U! k" G# ^8 V( E
      System.out.println("\n  0 T6 u* n& U1 y; D4 ~3 @
***************************************************");  " q, t% M4 P- Y- X  A; m1 k- n
      System.out.println("\n @(               Version 1.00 97/12/30 ");  + O2 q, B) C5 _8 p% j9 L6 u
      System.out.println(" Copyright (c) 1997  9 {' |8 h/ E$ l& ]+ G
          (Lui DongBing) All Rights Reserved.");  " t/ H9 C$ ~( |  I1 y% b: P% e
      System.out.println("\n  
: K  X8 B/ |& u- o, Q  u! `4 [) }**************************************************");  
# F* O0 D( F, `+ R3 L  S      System.out.println("\n Client socket:"+client);  
* [& a6 m1 s! W! t! f: G0 @+ @      System.out.println("\n Client is ready ! \n");  - k5 P8 F( P8 V4 p
      out=new PrintStream(client.getOutputStream());  
& I6 F3 C& [$ p" |6 K      in=new DataInputStream(client.getInputStream());  
; Y: a- d3 o) c& m     }catch(IOException e){  
  v  w+ j$ D' E      System.out.println("\n IOException !\n"+e);  
+ J' F5 {# I/ h  `& `/ V: q) `      System.exit(1);  
; o! f) @8 d; j* k4 e! R    }  
1 N2 N' B/ L; ^) Q  }  
% a+ V6 C) N( D# ^}
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

    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-11-1 15:35 , Processed in 0.368854 second(s), 70 queries .

    回顶部