QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |正序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
. h4 f; M5 ^+ O/ x0 g$ _
. F, g6 S: w: z" e4 \/ {* w---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  5 j& j) C( V' e2 y

5 L, {, x5 o+ X8 j8 Z+ Y3 N- Y---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
: U6 k0 O% K6 O# o4 n  \Applet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
3 d( k" E& W' t+ ~) O5 N2 {2 G6 u7 s0 d9 I1 }$ k6 {: G
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
% @6 q5 u8 h0 X# T8 \" }
4 E% U7 g$ \8 G: R1 }---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
8 o) G; U4 E, V/ \
# B1 P) x* Q. f  q2 K; K---- 例 程 如 下:  # t( c3 _- O8 m  u

% J$ p2 l6 u( J$ H" a0 ]! L      import java.applet.*;  
5 r) V7 i$ D/ h4 m! R      import java.awt.*;  
3 ^& b- P1 J/ ]* v1 s" G      import java.awt.event.*;  
& u9 X4 x/ X' g) h3 }, Q     r& Q7 _4 u* p" `) E4 k

" H% C: d" z4 N3 q; m  L      public class Example extends Applet implements  
: X* v" z/ U. }" m/ t- @: F7 }$ O                       ActionListener{ //          public static void main(String[] args){  
9 d& q1 {* D  ^$ d1 o8 Y           Frame win=new Frame("Example");  & S' G6 d0 t) j
           Example example=new Example();  
; y+ u4 i; a, Q0 \           win.add("enter", example);  
" J3 l/ W# P- f" g           example.init();             //            win.setSize(600,360);  
; @: p; K0 \( U           win.setVisible(true);  7 K  |+ k* g: Z! `/ A
         }  
7 ^# {, m& y6 ~& d3 A% R      public void init(){                        //            Button button;  
% {. [" ], `* V# u$ ^0 S+ _) F$ D           Label  label;  1 |, Q+ \! V% x0 I6 T. g% A) G
           button=new Button(" OK "):  
3 P; `+ B/ t# n1 j! e, @0 e! d/ z, k           button.setBounds(280,200,100,20);  7 y" o& c+ m  F3 ]1 Q8 _: z
           button.addActionListener(this);  $ w) ^9 ~! T* u/ m. X% }& q
           label=new Label();  ( u/ t* i, ]  m9 D" E
           label.setBounds(260,100,200,20);  * U: j) J7 R2 M
           add(button);  
6 x( r0 V: X+ R: r5 z           add(label);    x" Z! _8 R8 u4 `- f# W
         }  $ ?% ]$ X# ~( S: i! y
       public void actionPerformed(ActionEvent e){  
* k+ K  A; F/ a9 U' l% ^           Object source=e.getSource();  1 w5 f3 H+ L) o6 k. ?  D
           if(source==button){  7 M5 D7 e6 V$ S8 a4 z7 D
             label.setText(" It is a example !");  
; g9 [& ^3 I/ H9 M& u           }  
$ U' N) ]* a, o  t         }  
& J2 ?* C0 b2 _      }  
! U: w+ E3 L7 [2 K/ B1 }+ o& G6 ]# M: Q
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
6 B; T' J* E" f2 o: Z# B( V+ a6 Y
" G; b) p7 O; M, ?---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
" G- H0 q+ ]6 D6 B3 J+ ^
( m0 D; q3 U3 F  y---- 2. Java 中 的 发 声 提 示  
2 `- Z% P2 g5 b& @: V  P$ v3 z" B) _3 |- S! _
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  0 S7 L  W& Z3 V& J5 ^0 U

" W. t/ p. n3 i2 `---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
! A6 O* G% Z( Q9 Q+ C; b) H. l! w4 q+ U& D) Y
       AudioClip audio;  
; J4 h' a& D6 ]+ S% }1 u' }5 }9 q         audio=getAudioClip(getCodeBase(),"Hi.au");  
3 M; ?5 j# {3 ]4 |$ Q/ q( k9 \         audio.play();  
, g. S; g+ M; R) ^" D/ Z8 T) {5 }9 O, U5 d1 f3 k" W% H
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  # l9 ~% c* W0 Z, h3 Y
够 被 调 用 的 。  & [/ Y+ u' f# Q7 {% W1 C

$ z0 y6 [) R7 B; B---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  ' o2 p5 ^. D! n: e

7 j. @7 a/ W  v' D* a# k0 @% F---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
% {0 w7 ]" \4 r/ u/ k7 B3 x. ?, K* d4 G/ p$ U3 i
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
. r( Q/ E5 C- N0 z$ m4 i  Y
0 }; e4 \5 Z4 ~* ^$ V; c: x# t& j---- 程 序 如 下:  
+ [9 {4 r0 ~" ^1 F" k: E9 ~2 r# A$ G( E1 i+ F3 E8 f
服 务 器:  * R1 u0 t& g, V; i2 g& h/ S
import java.util.*;  # k  k$ ]. r5 `9 i& V# |
import java.io.*;  3 A+ V) D% j+ d
import java.net.*;  
* _3 [8 N4 y: w/ `* ?import java.awt.*;  
! W( s0 a" e) E
& j! g+ y. t+ d* v6 ~; h- W& epublic class ServerT{  / z# D, }, r8 U. a# n, x1 I/ L
  public static void main(String[] args){  
$ h4 a' u- [7 @  g1 A  m    Server server;  % [7 e. H1 f3 h/ g5 Y; L' \' y3 V
    String clientRequest;  . t# W+ h, w8 [  U" S- p
    boolean quit=false;  
0 R1 |- J# m/ G+ r    server=new Server(8001);  
& ~* Z( n* q- B0 \4 t. J    while(!quit){  
; i! D$ B' x4 E. A7 o      DataInputStream keyboard=new DataInputStream(System.in);  9 M- h: z3 v5 V% c5 ~3 f0 M9 |. X
      try{  ' \7 {' L" U% _. _" e9 C4 _4 p4 H
        clientRequest=server.in.readLine();  
& K& w, G3 Q/ _; R# U4 a) D        if(clientRequest.trim().equals("CLOSE")){  
& l% b! W$ W4 u5 R* p" H* N          System.out.println("Client says: "+clientRequest);  
' g4 u7 f4 I+ Z6 i( K          System.exit(1);  ; A6 J/ e9 N5 Z) Z
        }  2 M( S2 [. N: L3 ]
        System.out.println("Client says: "+clientRequest);  
* C5 J* L2 r: }  C0 T; v6 j7 P5 a$ n        server.out.println(keyboard.readLine());  3 g# f4 T7 V0 }0 i% o# S
       }catch(IOException e){  
2 z% [; S1 g' W        System.out.println("IOException in server.in.readLine()"+e);  , W2 C* d; `4 W5 L6 m( k
        System.exit(1);  
1 A( H5 I% {; E# |      }  # {3 v+ F# o* q4 a
    }  
( F8 }# l! [9 U0 e  }  
8 k( C) N& R$ R  m5 ^9 j' }7 [4 d}  % j1 {) T6 ^: z6 x4 a) {
class Server{  # h, s2 M' G0 Y! Z) H# t
  private ServerSocket server;  & H* R1 G; C: ]3 E. p
  private Socket socket;  
& ?0 i; z  a: c# k, x  public DataInputStream in;  
' _$ c4 b" a3 a$ H1 f; S7 k  public PrintStream out;  
4 ~: B3 C/ f4 n9 J0 m% l% H  public Server(int port){  3 |: I8 B$ \( r7 Q: H4 j5 v+ W
    try{  , k$ q7 C* g. Y$ ~- ^
      server=new ServerSocket(port);  
$ K8 V) l$ C, L8 `! D      System.out.println("\n  7 {# `# v4 G5 {0 r
*************************************************");  9 G" `) O% r5 o: ^2 e6 g/ C
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
* V- w& h6 C  A& K9 U  u8 q+ ~      System.out.println(" Copyright (c) 1997  
) `; D# @! ?% R              (Lui DongBing) All Rights Reserved.");  
* U: f' ^3 o; P0 b      System.out.println("\n  
3 z  }" A/ {, S( i***************************************************");  5 |  q- k$ O+ f3 n
      System.out.println("\n Server is: \n "+server);  
3 ]& r2 N: O, K" j( N      socket=server.accept();  
& P$ R) W, ]5 J) A5 I  t      for(int i=0;I < 260;i++){    // 发 声 提 示  
' m* Q+ M7 n# v7 z        Toolkit.getDefaultToolkit().beep();  
5 S5 N# K. ]1 q4 m- Y( [( j      }  9 q1 I: J3 F% Z/ V1 i; A
      System.out.println("\n Server is ready ! \n");  + \" i  l) r3 L2 @  v4 [& z  W
      in=new DataInputStream(socket.getInputStream());  
: G8 q8 m+ U/ t; p% v3 C$ Q      out=new PrintStream(socket.getOutputStream());  
' Q6 |. I4 \3 k. f( }      out.println("We connect in "+new Date());  
! R5 A8 G: R% |, m8 U+ L1 h    }catch(IOException e){  
: `/ |* F# |  I; ^      System.out.println("Server is failied !");  
* K: e/ @+ M- W" m4 z! z+ ?& V3 u    }  6 r& P/ j( R* P$ W
  }    L2 k% X0 z+ n. g) c$ Z6 J2 D- B
}  8 {% n: V4 S( Y, \+ x4 d
   , v" P, |" D- f
5 ?! @& G- v' I* B
客 户 机 :  7 N: V7 P, E# ?/ o) T0 {
import java.util.*;  ! e7 I/ K0 f# p3 J" I+ G8 f2 \
import java.io.*;  ' ?; T1 ?% s, b9 k, t1 R1 ?
import java.net.*;  & r! m- Y/ Z6 b8 I

) K3 ]. d* j$ @0 g/ rpublic class ClientT{  
, C! i: @) M7 X, D" C/ K  public static void main(String[] args){  ) J( ]& o/ v* _2 C. h
    String welcome,response;  
4 n1 e- ?$ ]* |) B7 D2 E( ^    Client client;  
! x7 f+ _) C+ S5 R9 A  r    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
; g+ I  j& R: Y1 T6 P. J( K0 y    boolean Bye=false;  " c) O+ p5 a- B: E% w( v/ [" [
    while(!Bye){  ( I, C. \1 O/ ^9 r/ O+ W5 U0 P
    try{  $ z! _7 N3 T, }, w0 y5 V8 t- Y* M
      welcome=client.in.readLine();  
% ?' d) h/ O, V) A$ N8 j) e  `6 I+ W      System.out.println(" Server says: "+welcome);  6 Y1 P5 F6 b- M9 L$ {
      client.out.println(keyboard.readLine());  8 I% i9 q" `# R4 b. n1 G
     }catch(IOException e){  2 |" y- d( e, K& z0 ]6 Y
      System.out.println("\n The talk is CLOSED !");  
" c8 Z& \: r( ~) X      System.exit(1);  
' I, S8 ?6 ~. r( @( k    }  : i! [% G9 {' R* x* u) M
    }  
- F+ p% h! L. s+ _. v/ Y    try{  1 ]2 u$ i9 K/ j! X
      Thread.sleep(200);  8 j0 k2 X" m/ W  s- \
    }catch(Exception e){  
# w5 d1 P5 d# }# C$ t: A; x      System.out.println("It is a bug !");  
+ L# X, L# p* F    }  
) k0 T3 i" Y) R/ l4 \) F' S6 X  }  
/ U" m  t" q7 C6 l1 f, Y}  
/ S/ [" e, A1 z% r; Vclass Client{  - Q- S0 i# r5 o# r# J0 `2 M
  public DataInputStream in;  
* r- X% L8 g# V+ |( w7 k  public PrintStream out;  
; A* P# f* b  ]  Y% M  ^  private Socket client;  
7 j9 n4 {$ C( N& p. J  public Client(String host,int port){  1 {% @" X, W5 E
    try{  
* V2 e9 z- s; q      client=new Socket(host,port);  ) `6 r0 Z$ j/ x3 ^5 p: P4 I6 ~
      System.out.println("\n  
6 G( n% C! B0 w/ W* \8 z7 T) [* J, Z***************************************************");  # `: [) A( [! S4 V, l- w
      System.out.println("\n @(               Version 1.00 97/12/30 ");  ) d& m+ g4 `9 r) U! b5 o' o# e! T
      System.out.println(" Copyright (c) 1997  % _5 m0 I4 N" w( _6 t6 H" T
          (Lui DongBing) All Rights Reserved.");  
. ?* M5 @$ t# t7 a2 b0 i      System.out.println("\n  ' z3 M  X& V  d1 Z0 M
**************************************************");  : v1 t# K" C9 j0 w* Q" c( U& V' C
      System.out.println("\n Client socket:"+client);  6 n" ]5 V9 o: n! u! ]8 s
      System.out.println("\n Client is ready ! \n");  
: T( K/ S$ O6 x3 W. f, k3 E      out=new PrintStream(client.getOutputStream());  
* y0 y$ g$ P4 U' K/ F      in=new DataInputStream(client.getInputStream());  ! B: G' ]" m0 O0 q5 ^' E
     }catch(IOException e){  
. b: |7 A* r2 {      System.out.println("\n IOException !\n"+e);  
0 d7 ]+ h8 ~: a# L+ y. `      System.exit(1);  / z+ T# r2 q& S: L+ z
    }  9 \" I3 }7 u/ U
  }  * H- C& l( W, j7 W7 s5 }
}
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
如果我没给你翅膀,你要学会用理想去飞翔!!!

33

主题

10

听众

1691

积分

升级  69.1%

  • TA的每日心情
    开心
    2014-7-8 08:29
  • 签到天数: 201 天

    [LV.7]常住居民III

    发帖功臣 新人进步奖

    群组: PLC和单片机

    群组: 2012第三期美赛培训

    群组: MCM优秀论文解析专题

    群组: 沈阳理工应用技术学院

    群组: 学术交流B

    回复

    使用道具 举报

    zq1987884        

    0

    主题

    3

    听众

    19

    积分

    升级  14.74%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    wangyu249        

    1

    主题

    3

    听众

    54

    积分

    升级  51.58%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-11-1 12:49 , Processed in 0.209170 second(s), 70 queries .

    回顶部