QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
1 ]8 D( i# I4 S' S* E
! ?7 v. w% q* N! z---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  8 A5 `: A6 p0 a6 X; p( ^# [

9 }9 _1 o/ H3 Z+ B---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
  O# e: o  A- E) TApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  # ~/ x$ _$ p' k- A
3 i% |& W( J) r9 h; U
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  2 U8 c! C+ [/ `& O; f8 X7 Y

% j# W" ~+ v" e& j* p---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
3 Q. K* q$ c# j  G. g, f
/ i' [$ s. C3 S; J7 I5 e---- 例 程 如 下:  
4 p: i  Z4 G2 L3 z& `; F2 c+ B& F9 g# l& g, g/ E
      import java.applet.*;  # Q7 x* v& a# z- P1 ]# s$ ~) u, w4 }$ ^
      import java.awt.*;  
$ Y: W. x; U# K* N* D0 k      import java.awt.event.*;  ' Y3 Y* A' a: g4 J  f! i! [
   . n. y9 |' d: W

: ?/ a. P) Q# b# c! E% R% u      public class Example extends Applet implements  9 L5 X6 ]" @3 h% u) Z4 F0 L% o: J% w
                       ActionListener{ //          public static void main(String[] args){  " z6 g& @* s! X1 r9 s) F  T" Y
           Frame win=new Frame("Example");  # Z( C7 n, _, M, W  a% f6 p
           Example example=new Example();  % \! @# p$ t3 J  R/ j- ^( D
           win.add("enter", example);  ; X2 a, ]$ Q9 f
           example.init();             //            win.setSize(600,360);  
3 S; l6 D1 v* O. K           win.setVisible(true);  
" w6 k. X+ V! K9 ~! }: G) _         }  6 r1 A% j% f8 l% o0 t$ ~/ e
      public void init(){                        //            Button button;  4 ^8 j  L. H2 ?% b, T# A
           Label  label;  2 M- ^. G3 |4 m- \) X
           button=new Button(" OK "):  
; o' z+ U* Z: v, M, V! t           button.setBounds(280,200,100,20);  * f9 h$ I6 y- L! k* d& T( L8 T
           button.addActionListener(this);  
8 r' f9 b% i% }4 }* w           label=new Label();  - T: x1 N1 q) g  B, S
           label.setBounds(260,100,200,20);  
' j9 ]" h5 @! g9 d8 V1 [( M. d           add(button);  " C- I/ w# `( `* i
           add(label);  
/ O" I& R- C/ f8 i         }  
7 r( U) X+ @' B3 R       public void actionPerformed(ActionEvent e){  
6 H* A) D) Q" O+ p- A/ q- }( E           Object source=e.getSource();  0 W9 J. w/ N: z9 S* B
           if(source==button){  3 m9 ~5 X& T7 c8 D7 I
             label.setText(" It is a example !");  
) \; w4 _0 x& c7 g+ o* R           }  
4 L7 @+ T& y) [         }  
: d8 a! Q- U% p4 x; T      }  ' U$ ?- _  U8 m* [
# R: M, J4 j. [0 b0 o- x' K( F
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
! a+ L  ~" Q* K. v- d% Y4 r" D
3 H: @) d1 t5 c; b, Z! }---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  9 g2 o9 O: b5 C2 |! r! `( c5 E
8 {8 {7 Q1 g" h! `
---- 2. Java 中 的 发 声 提 示  0 v1 H. m7 |; h/ M! [

+ C( n. L- q$ _+ r) |0 x---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
2 i& f( J$ [( q+ d  [3 K3 ^: U* m# Y, T7 l5 h, i5 r7 `' V
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  1 h! R6 [  P$ @

$ k3 W( O/ a" Y6 [0 q       AudioClip audio;  
' h/ A; ~; {8 X1 f8 ^9 X         audio=getAudioClip(getCodeBase(),"Hi.au");  
) S8 O9 k" Y5 b8 j* f         audio.play();  
  \( u  r. @/ u( y4 G  z5 z1 B. S8 L5 U+ A+ _
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  1 z6 Y1 n/ P4 G0 |' U, S1 E3 M
够 被 调 用 的 。  ! N" @8 K' n( ~6 N" X1 ]* }, b& V
  ^4 A% R) i3 a$ f0 u2 f) y+ M
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  : G3 r# g, [7 _4 @0 H
9 o; x/ p- f# b$ V4 d3 g
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  ! ?/ T  Z; T5 b8 g' o* R
+ b" D" O0 ^, X
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
, e8 N& E9 G2 Z+ T$ ~9 C0 s
4 `  S5 S7 v( ]* I" b---- 程 序 如 下:  
  D( a4 W% S) B# }& P7 S0 h! D
' Q0 _9 u* `1 X- ^6 D4 T8 ^9 R' f 服 务 器:  
& e! A& x1 [7 i$ ~1 c; L9 Aimport java.util.*;  
6 q! X) I6 L, v$ b+ \. j1 @import java.io.*;  ' J8 `$ U  r' e! }& ^+ J! I& {
import java.net.*;  : N! f; B8 y4 U1 z4 a# ^0 y
import java.awt.*;  
* m. m( ?  `  O+ v, r- g* b( T) \8 S; S/ ^/ y$ |1 ^' _
public class ServerT{  
3 _$ }  u% b4 h& I! n  public static void main(String[] args){  9 F) b7 J1 q8 z: i1 E$ i
    Server server;  & I7 k! }0 i, q/ ^# u- M/ s
    String clientRequest;  
+ f% P: Z5 [- K. T$ V    boolean quit=false;  ' @( C( O- u: v+ E3 S* e
    server=new Server(8001);  + o1 i" A- i* }3 R
    while(!quit){  
7 E' H: [* Z5 A6 w- h      DataInputStream keyboard=new DataInputStream(System.in);  
0 R* p, W9 Y: `( y      try{  
# I) j$ X& q1 x        clientRequest=server.in.readLine();  
) [% [" R, C( a5 h        if(clientRequest.trim().equals("CLOSE")){  & |2 v0 _3 i) \8 v6 k
          System.out.println("Client says: "+clientRequest);  ) x% W4 ]: K) a" ]( e3 y4 [
          System.exit(1);  5 V/ p3 I, Z5 d$ }7 N
        }  6 n: D$ b# b; W( z" G, e7 X& e
        System.out.println("Client says: "+clientRequest);  0 F) G! L, r6 t
        server.out.println(keyboard.readLine());  ; R5 c( i, C8 y9 p& n6 E
       }catch(IOException e){  
9 y3 @2 j) K+ Y, n" B; g        System.out.println("IOException in server.in.readLine()"+e);  * B' p3 U! W- t" p6 Y
        System.exit(1);  ' ^2 t" ~) b% Y& N2 n9 L
      }  
. y8 j+ o5 T% a1 i9 Q    }  
$ k+ [0 l: O2 A! J  }  - Q; H( h# p: `+ |2 q3 U+ t
}  
- D( t& r; D- f; [0 p; B9 kclass Server{  # f& Q7 D  d/ m8 g
  private ServerSocket server;  ! c5 z$ I( V1 ^5 c9 O! V3 I
  private Socket socket;  ! U! K2 I( \7 ]1 S# f9 i
  public DataInputStream in;  
% N) R! g- c- H1 u; M6 a  public PrintStream out;  ) Z! n: _. M' t8 E% [5 e# H+ K
  public Server(int port){  
6 {. P% I: O. m6 ^" C* T    try{  
0 {6 o! P- S( @) y! \      server=new ServerSocket(port);  3 W8 I, w2 p: }. w
      System.out.println("\n  : I. @' q3 t7 @5 N+ `
*************************************************");  1 f: G& n$ K1 a1 L% i: H6 m: F
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
7 C2 ~. x) J# f      System.out.println(" Copyright (c) 1997  . Q2 j% |( R. w% A- D& e* F
              (Lui DongBing) All Rights Reserved.");  - o, h% k. I0 H" Z6 L
      System.out.println("\n  % |6 Y. P) ?# g* d
***************************************************");  
5 o, V+ {9 k8 v3 ~) p5 d      System.out.println("\n Server is: \n "+server);  
6 Z6 G* K& m1 x5 _- A( Q0 }! }1 Y      socket=server.accept();  
# y* ]3 A- x" `: U, w7 R2 S( x      for(int i=0;I < 260;i++){    // 发 声 提 示  % ~6 P9 Z/ o* C* m1 n  B$ d
        Toolkit.getDefaultToolkit().beep();  ) F" T, F2 d7 G, [! M9 @
      }  
& E% H: F. o& |: L& }: w      System.out.println("\n Server is ready ! \n");  
, n4 L( `  X: z* b      in=new DataInputStream(socket.getInputStream());    c) p- q2 B. L: K
      out=new PrintStream(socket.getOutputStream());  $ N4 w# R9 o+ _7 O$ g5 ?
      out.println("We connect in "+new Date());  ! z  H! `, @; G6 c; w5 R; N
    }catch(IOException e){  $ G+ |+ T9 n0 W+ ^$ J' w5 J
      System.out.println("Server is failied !");  
! L3 @% L) b) @$ Q4 v( O! O    }  
" [* M4 q" Y2 Q7 V' h# Y  }  ( R7 I5 J9 E4 U9 I6 a. q
}  
6 e; B6 s0 n% v7 R   
! [1 W- B& Y+ Q, e! U4 S0 O/ [: j  m; O7 S" o
客 户 机 :  
* t* W. }9 E; e9 s" g2 eimport java.util.*;  " }" J8 u0 l5 [3 [4 L7 N& ?
import java.io.*;  
9 J9 M, ]( S- O! f6 yimport java.net.*;  
) i8 p/ X' i3 w7 h  a
9 O" ^5 |1 A6 F! zpublic class ClientT{  
( u0 r2 T. P- j$ C; V& \  public static void main(String[] args){  2 R* j$ V! q4 h. c
    String welcome,response;  3 e7 n: H: D$ E) X' ]
    Client client;  ( L/ d* x" v5 Y- n3 Z0 o: v/ R
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
; |# r- f3 K/ o; P* s% i    boolean Bye=false;  
0 `& }: E3 O, F6 S8 I    while(!Bye){  
2 K; \% L) x! l( L3 ?    try{  5 U7 r% X5 f  k) |: l* N1 M
      welcome=client.in.readLine();  
; ?0 i- Q& x  }4 J. R8 R1 ?      System.out.println(" Server says: "+welcome);  1 b2 f; \2 \* c( X- a2 e5 j
      client.out.println(keyboard.readLine());  ( U) D$ S+ @4 R: q' `
     }catch(IOException e){  
. r. ~( R% Y' B* K      System.out.println("\n The talk is CLOSED !");  ! a- j+ H# Z' a- I& t' h
      System.exit(1);  
% a0 ]5 N* j& d/ P- i/ h5 Z% y3 q+ q    }  : Z: t1 o0 G5 m- i
    }  
0 G/ S  \3 m0 ~' {    try{  
) {5 K9 |& n  \" J      Thread.sleep(200);  $ Z1 v4 a+ Q4 l
    }catch(Exception e){  % @- x9 t: U" S+ I4 e
      System.out.println("It is a bug !");  
0 s1 w7 e5 ~& I    }  / x9 i) D8 P, [6 s# o/ s2 l* e/ q
  }  ; _7 K# |, \* `$ r; R! a
}  $ Y- g8 {6 M2 O. o
class Client{  
4 I/ c4 n' Y) b' \& C& _  public DataInputStream in;    s5 v5 o3 y0 p, \8 ~! `& H
  public PrintStream out;  & j8 P6 H( s8 d# P
  private Socket client;  3 q3 i3 k5 _/ D
  public Client(String host,int port){    t! T& w# D2 _) ^' p( D- {
    try{  6 l8 X* f* ], B+ `
      client=new Socket(host,port);  / m0 X5 ?8 |) i& x. z/ q+ S
      System.out.println("\n  
( C6 \( h" K1 a  t! P***************************************************");  : b& b7 L& p3 o8 G& q
      System.out.println("\n @(               Version 1.00 97/12/30 ");  " D) O- I2 G4 M9 _, f8 F% |
      System.out.println(" Copyright (c) 1997  3 `: R3 t! V4 q2 b
          (Lui DongBing) All Rights Reserved.");  $ ^8 w  \+ e, [& y0 I
      System.out.println("\n  # J) Z% W2 P1 V3 ^
**************************************************");  & n7 ?" Y# ~  Z2 y5 }# f8 h
      System.out.println("\n Client socket:"+client);  0 c) W, u8 m8 K: `  u
      System.out.println("\n Client is ready ! \n");  3 u0 D3 x, W7 L* \' U. i
      out=new PrintStream(client.getOutputStream());  3 B8 l. ^5 R" s- l" V: f
      in=new DataInputStream(client.getInputStream());  
8 N$ Z% k5 m% l2 u/ R6 @     }catch(IOException e){  
0 G0 I, K; l: r1 `9 _+ ~      System.out.println("\n IOException !\n"+e);    @( e! R& o; [9 I
      System.exit(1);  
" b( ?2 [; l3 z6 \+ o" a    }  
7 u% {: h) q: V& Y  }  ! r' y* T6 {: Z! `
}
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-23 21:07 , Processed in 0.766637 second(s), 69 queries .

    回顶部