QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

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

7 k5 o9 X4 q9 X( z---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  ; X% W8 V# h, }3 t- t

9 U- T$ ~* c* t5 }---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  : ^; c& a0 t" Z5 j  B
Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
- Q& b! y, j8 b% h0 V  y/ L: M& u
3 B9 Z9 B# ]8 ?& z, m% Q1 k: Q---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
0 ]6 {& J+ N! T# G2 k' B3 T# d* i" R- V4 r! ~  b2 L
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  % N3 P/ }* T# P
" |, E/ B! z' c3 f
---- 例 程 如 下:  
+ T5 o, }, i& d) m2 c  I9 v
5 K6 Q4 ~. t/ D$ `4 x: G7 U      import java.applet.*;  
" }4 a) f0 s5 x3 ^. b0 J/ m! p      import java.awt.*;  
4 R4 t0 b+ T8 p      import java.awt.event.*;  9 g! T1 Q. p/ p
   
$ B5 |7 B6 b7 t+ X- \( w1 ?
1 W' P+ x# A) m2 P- @. {6 \      public class Example extends Applet implements    x5 Q3 n$ V/ y% O( q
                       ActionListener{ //          public static void main(String[] args){  
+ E% j  N: l6 N! f, k/ N           Frame win=new Frame("Example");  1 S* [: L0 \* _; `0 x
           Example example=new Example();  
& S5 n* \3 R% _           win.add("enter", example);  
& {9 q8 s3 N' b, t; W3 j. h           example.init();             //            win.setSize(600,360);  
$ \. t& p5 Q4 a7 @$ P6 o           win.setVisible(true);  
1 f6 [# P1 l* N5 X) h" q         }  6 e' d( ?1 B$ v8 Z6 C9 ~
      public void init(){                        //            Button button;  5 [. \' i+ \3 k
           Label  label;  
8 l5 l4 e/ e6 N4 g0 \0 }7 e           button=new Button(" OK "):  
# ]6 e/ B2 U" b           button.setBounds(280,200,100,20);  , s: ?9 T1 ~1 T1 r1 ]( N
           button.addActionListener(this);  7 [$ D7 x4 v  c  s% i
           label=new Label();  
$ U4 T$ L; B" p& K) b' `' z4 e           label.setBounds(260,100,200,20);  * i2 Z# b2 c0 O9 D/ F& M' v4 ~
           add(button);    z8 K2 @9 i/ p" P! J
           add(label);  : [0 I: v: s* s7 G8 x! E$ V
         }  
: E7 E4 A2 E/ G# f       public void actionPerformed(ActionEvent e){  3 e3 Z5 Y$ T0 M! k7 [/ k
           Object source=e.getSource();  9 }- I1 j4 ?  K4 A- D6 e
           if(source==button){  & K- W. j6 a- ~, @' Z& [/ x; N
             label.setText(" It is a example !");  ; w* K" k! Q4 R. _/ F
           }  ! w5 z' c; _$ Y: w6 W7 g; Z
         }  
! w. W) l, v: ?7 D; y3 U$ T5 A& D      }  % K4 p* Q+ a0 V& E( }

* b6 r" K: e# O, D4 d---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
- |7 h: b3 Y* i2 T+ y
" I$ W" f- S' W---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  7 l$ B2 D% {1 p) m( B( v+ V

6 C; v' a. v8 p2 A9 r7 A---- 2. Java 中 的 发 声 提 示  
" w6 N# U4 J/ |
" b; t" c7 W6 g0 V7 w% h5 y8 ~3 _---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
2 V; Z+ H- j  [& s1 b
# R9 R2 R& L. q5 ~* N- n---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
$ c9 N& O0 j* E+ K3 @1 L( C, c/ X/ O8 D
       AudioClip audio;  
6 O4 [5 S% k4 M8 {$ Z         audio=getAudioClip(getCodeBase(),"Hi.au");  
! V! \/ |. a3 h4 W         audio.play();  
+ }9 _/ k- {) p6 N; S
) P6 Y. s) z+ ^; D# [! A---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
8 H" c. T1 }3 e; f- J够 被 调 用 的 。  
* I; s$ {$ c* W7 k6 w
: \1 r) _/ r5 O- v  ]---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  $ i4 o$ ^* J. Q" U

1 Z: c0 j: G- n! a& T: A---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
' R+ I, B) i' i! C$ k6 [- H9 |1 \1 R  Y: F
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
1 c1 T0 \! A8 C. D# t0 t! P% I- [1 ?1 x4 L- T2 t) z& H" @  ^
---- 程 序 如 下:  + g. Y6 z3 S. i1 G% y

/ Y6 n5 i" }) D0 f* w  r, ` 服 务 器:  . l: O' ^* q! T3 ]6 [: J
import java.util.*;  
8 N8 O* n& ]0 m) M% M/ Q! qimport java.io.*;  / S' ~" }* K8 g( O$ w1 S+ a
import java.net.*;  ' F+ u0 N+ o" u+ }
import java.awt.*;  
+ f' U8 P. i) A( ^- V5 B1 Z' C& Y# |6 `
public class ServerT{  ' O3 e& d4 ^( l) V  |: z$ l1 V
  public static void main(String[] args){  
; W$ F0 w. o' C; f( h, G    Server server;  6 l, H* e$ u& ^2 T8 R# n
    String clientRequest;  
- N) v. B& s  O# R! _    boolean quit=false;  
$ f3 s) Z/ [) C    server=new Server(8001);  
  d! J7 ?6 V. X  {6 q    while(!quit){  - \# i' q4 s# `+ x6 N8 H
      DataInputStream keyboard=new DataInputStream(System.in);  
  o- B' l0 O& B1 Z      try{  
2 F0 {9 J9 b9 Y, a1 `# x5 k0 [        clientRequest=server.in.readLine();  7 U2 q7 ?$ I2 y8 T9 q
        if(clientRequest.trim().equals("CLOSE")){  3 [( X& [6 h8 y5 Z, B" i4 b
          System.out.println("Client says: "+clientRequest);  
0 V, X7 S) L7 L0 p, L& p. ^* a& z          System.exit(1);  
+ y  O- S% l* c8 e6 ]        }  4 x- r4 Z8 q! R9 Z1 j6 F3 E
        System.out.println("Client says: "+clientRequest);  
8 f2 N1 t  S/ |" A' z2 W) A1 b        server.out.println(keyboard.readLine());  
$ u7 B4 B/ n5 t7 l; R& p, y/ }* G* V       }catch(IOException e){  
: p; T9 J7 A; q        System.out.println("IOException in server.in.readLine()"+e);  
9 X5 k- f5 c7 G7 A. l5 D        System.exit(1);  
% U8 I( H4 Q1 y' I  x' W3 |      }  , f7 f# K; k! z9 I/ D- J
    }  
7 ^+ Q7 i/ z( T5 b$ r+ A  }  / Y% e  O: T( e9 [* s/ h
}  . n9 Z9 _- c6 _7 F$ a9 x
class Server{  
# @8 a3 x" g& i2 y4 J3 j1 c  private ServerSocket server;  % h7 m. w4 s+ G9 p) D6 m
  private Socket socket;  5 D; M. f' e6 N/ I5 n0 z
  public DataInputStream in;  
; u9 s1 i4 T7 p) s6 @6 x' u$ x  public PrintStream out;  ! D# U. |0 y) a. q# }2 U
  public Server(int port){  ! q, s9 X0 d5 S
    try{  
  o8 i, R* n- t; a      server=new ServerSocket(port);  * {; {6 l8 L8 o1 J3 H% ^( }5 S
      System.out.println("\n  # q: F3 v! f9 p: z8 A% t* j5 M
*************************************************");  
9 t) w% K5 ]4 S( @      System.out.println("\n @(              Version 1.00 97/12/30 ");  
7 q* F2 E- X- s# X% w      System.out.println(" Copyright (c) 1997  
; V$ W, |; g# ^              (Lui DongBing) All Rights Reserved.");  0 K& U1 A; V/ F+ V- G( K
      System.out.println("\n  : ]/ @6 V: t. T" V
***************************************************");  
) `. v! m, M0 Q" ~; n1 _6 V      System.out.println("\n Server is: \n "+server);  
1 u, @& B/ V1 x$ @; B6 S  g      socket=server.accept();  
8 a* S( o5 c9 f& ]1 O5 N      for(int i=0;I < 260;i++){    // 发 声 提 示  
( N3 G% I% @/ [        Toolkit.getDefaultToolkit().beep();  
; T* t. U/ b8 g# p6 b      }  * ^" m$ O, J( Y8 \* {6 k
      System.out.println("\n Server is ready ! \n");  
+ J# X4 C) m3 y; e. v      in=new DataInputStream(socket.getInputStream());  
6 n: k$ J0 B" d$ y      out=new PrintStream(socket.getOutputStream());  , `% [! q$ g8 S$ w; j5 r' Q
      out.println("We connect in "+new Date());  1 I8 ^* ^' q1 k2 H+ q
    }catch(IOException e){  $ B9 T+ b3 j! ]! d1 Z  _. L
      System.out.println("Server is failied !");  7 U; i+ R; h" s* \
    }  * {; u  w- Q$ ]' \
  }  # ?! B+ Y0 [! U5 O
}  
: {1 l! ]- b; S' Y5 C   
' P  V1 O7 C4 Z9 c: }  s) Z4 x  Y1 ]
客 户 机 :  
* _# g6 `6 `1 f0 qimport java.util.*;  % f6 L* u8 W9 k6 O
import java.io.*;  
+ o# C3 K2 b0 S! Jimport java.net.*;  . H: ]6 s/ \+ C8 C7 F

8 x( \9 _2 [. F) s, W/ x2 `+ @+ g% Wpublic class ClientT{  
5 I3 E" \1 a' e* n  public static void main(String[] args){  + v, ]9 }- `  D! I, n
    String welcome,response;  
8 ]6 g/ o& c* q& J( R    Client client;  : l4 ^/ v1 |' R* ?9 a
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
0 O( }/ c# A( r; T  ?! E8 t* r) t    boolean Bye=false;  
% |5 ^+ r+ O3 H4 \/ [, ]4 e    while(!Bye){  
$ ?. d# V. v) q    try{  , C# ]- c9 T) k
      welcome=client.in.readLine();  
. I  |9 f% B' m  i9 c      System.out.println(" Server says: "+welcome);  ) N# ]! m1 I, T" |* F; [
      client.out.println(keyboard.readLine());  
8 P9 a1 Q1 ]" K, B, N     }catch(IOException e){  / `+ n' J/ x, @; f
      System.out.println("\n The talk is CLOSED !");  
2 ^$ P0 f/ y3 r" i# B( E      System.exit(1);  
  D3 b4 Z4 E7 A0 ?5 U6 E    }  
8 P, _# O: x% s8 n( l    }  
# r. Y. M5 u; x0 x2 s' S3 }0 z    try{  
0 l1 H+ M0 h. ]% P      Thread.sleep(200);  " k8 B; I* U; f9 j' u
    }catch(Exception e){  4 p) V3 Q7 ~4 `9 q$ O) \) r
      System.out.println("It is a bug !");    x! t  f/ n# B$ j2 p
    }  
1 X8 M& T5 Y9 G$ g' R  }  
' ]4 S1 \8 C* q) i5 d}  
' l4 h4 w# s% Q" G7 I$ O" [class Client{  
: _# {+ p! _1 V5 y: H1 n  public DataInputStream in;  
/ E- \. @4 \5 Z/ p" a1 T  public PrintStream out;  
. v' G+ ?, g. ~7 `; |" ?$ r$ c- l  private Socket client;    I1 O9 S4 R0 t) l+ _
  public Client(String host,int port){  
: ?3 G  ], X$ v% O/ c; n) `5 O    try{  
- I; k( s( E/ r# F& Q. K+ E      client=new Socket(host,port);  
- a9 S. r. P" g1 H      System.out.println("\n  
9 Z& W4 e7 ^2 y& t/ q* u% r***************************************************");  5 d8 z2 C* Y  u7 t$ u
      System.out.println("\n @(               Version 1.00 97/12/30 ");  8 I1 Z) U6 ^. @+ l! {; N0 u$ B7 s
      System.out.println(" Copyright (c) 1997  
$ W' N% E: @: d- H) C0 E0 D) s          (Lui DongBing) All Rights Reserved.");  
6 b4 a9 d: Z% l5 y% |# o      System.out.println("\n  2 C  n, t8 N$ [! t
**************************************************");  
4 k  f6 T. `7 W0 X9 _      System.out.println("\n Client socket:"+client);  
- ^$ O& ^; J: U& u6 ~) u2 y* R      System.out.println("\n Client is ready ! \n");  
, F4 i% c: Z; N, ?      out=new PrintStream(client.getOutputStream());  3 l- P4 M9 b3 F0 j9 j$ {" B
      in=new DataInputStream(client.getInputStream());  0 {  `6 ?0 A* n! f
     }catch(IOException e){  6 p! L$ F- {5 R+ R) e$ @
      System.out.println("\n IOException !\n"+e);  - a3 G* E# f$ J4 O
      System.exit(1);  * p# g: c  J8 Y- v$ p! [, d
    }  6 j% ]% X1 Q- N9 K
  }  
2 W& y+ j& `% u4 t) t}
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-31 20:24 , Processed in 0.515891 second(s), 69 queries .

    回顶部