QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
3 m8 E& b" R1 t  |& I' |
6 r* J% r# }: }! h- {, D! B---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
" G2 `7 b1 k) @# X$ N# s9 A
4 b- @0 Q7 y+ A$ O5 Z: V---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
2 W: H. B. R3 }: J/ t9 Y% `% g1 U/ bApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
' Z# o0 ~5 `: }2 `2 k8 r
- R5 @' C: g% H+ _---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
# ]- {! Y, L9 f! w, A& u5 t  s; X. E' ^- b( D
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  / T- M5 R( {( p; y' n

/ r2 o  g0 s2 V! o& F- s& c+ h+ p---- 例 程 如 下:  % x  r& c0 J2 c" y8 F, q
5 W9 U" @, B0 z4 p  B- H8 z) B( ^
      import java.applet.*;  
2 q( D2 b) m  R: n; G% H      import java.awt.*;  
  z$ ^0 ?/ e, r3 M. _      import java.awt.event.*;  5 X' \0 v0 s' l3 H' O
   
2 @9 D' G* {: Z% z4 R+ W; {1 t0 C
2 R5 A$ \7 L' }/ J4 f      public class Example extends Applet implements  
7 `+ I1 L1 N+ L) @  z# y7 I                       ActionListener{ //          public static void main(String[] args){  / ]8 \( p& H' n2 V, r
           Frame win=new Frame("Example");  
$ n& ]& X6 Q* i# |           Example example=new Example();  & ~, i' p! ^) y0 q( [' D
           win.add("enter", example);  
1 Q; ?3 i, _4 C( n" u           example.init();             //            win.setSize(600,360);  / I# n8 {& d# ^, C, }* a& k+ X+ K
           win.setVisible(true);  
0 t. I: E4 u% T  b; y, T! @% P3 p         }  7 v" f5 F) t3 f) S4 P  K$ Z2 {
      public void init(){                        //            Button button;  - A* g* c/ E+ r1 z# ~" ~
           Label  label;  
6 t2 v$ P1 t% B5 _. L           button=new Button(" OK "):  
- b; C/ ~+ P' T/ y+ m* n" U# F# y           button.setBounds(280,200,100,20);  , N, u9 Y0 v$ ?
           button.addActionListener(this);  ! ?5 p, G+ A- m% d
           label=new Label();  " s! g4 L9 P+ M7 B
           label.setBounds(260,100,200,20);  6 m- P0 `# \/ g
           add(button);  
9 m/ N" I& O% v. ]+ u: O0 l           add(label);  
. b% U0 b/ g0 K0 B  I         }  
; {, a6 w# c2 k* Z4 {: D       public void actionPerformed(ActionEvent e){  
& H- z6 N( a4 r' z) U! c           Object source=e.getSource();  ' T0 Y% }/ E9 V4 J1 E5 ]
           if(source==button){  
2 e8 B4 q$ q4 x) {5 S             label.setText(" It is a example !");  9 I! V2 ^$ q' y( i( U" A% j) P
           }  : `" [  ?7 E- O4 }. C3 x" M5 E
         }  # Q7 A/ }) \, y6 G# _) V6 ^
      }  
  d6 @- r8 ]( j; }4 |  n3 c3 \2 v: ~9 O" z( ]# }
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  " X4 S+ c6 s1 `& P* F, X

% q9 j0 n4 _$ K4 c1 o1 I6 v; z---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
3 I* U( O4 |' o' L5 Y3 b7 ]) F$ D. j+ l1 @: U
---- 2. Java 中 的 发 声 提 示  
8 v" J# N5 r# w4 z2 z& Z8 V; t6 l( R- I( b9 J% t
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  3 f, a$ M+ o+ Z# y4 c

) A* k, A1 L: K7 l# J! F$ t7 l---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  3 _! c- z/ c: p6 c* y
" {1 f( M0 ^+ h, E  c7 p: K
       AudioClip audio;  ' V( U7 H' A& E
         audio=getAudioClip(getCodeBase(),"Hi.au");  ; ?+ q" d6 f" i, }6 x% }& |
         audio.play();  7 V, b' n. D0 k: t% n- r

! u% g; ]( r0 U( ~& g---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  + L8 P8 n! t; R
够 被 调 用 的 。  + v& [+ q6 m! K1 l

2 W" [8 F1 Z4 \---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
6 C4 p( Z9 `: }, k. I" s6 S8 f' ?; M
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
6 O' Z- o3 d: H1 t3 t& M$ u: @4 m, I0 \+ p% q) K1 b3 I  e5 O( Y3 Y
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  # _! {  i# U: V1 D& y7 `1 r$ W% B2 F4 v

$ V8 A" A  u1 P9 l" m. E8 j---- 程 序 如 下:  5 b6 x9 Q2 b8 P# z) ~, c

1 P$ y% [6 a' j1 a9 Y7 I 服 务 器:  2 T; @9 A6 u" w
import java.util.*;  
9 L4 [; N2 w+ L1 v* J; himport java.io.*;  0 s: f% B8 I+ f; a
import java.net.*;  % O% X6 R6 J+ \3 G0 I8 x
import java.awt.*;  ! C: ]$ ~0 ]& l
0 P4 z9 e: @  Q: P
public class ServerT{  
9 Q! w1 F- U& L4 p  public static void main(String[] args){  
+ H% x1 R( O1 Y. e0 C    Server server;  * Q4 E: R% E+ G! m# ?% u: {
    String clientRequest;  
1 r( E4 G3 k. a* j" P+ R1 @$ z    boolean quit=false;  
# D- I: W$ E3 j) r. E5 X    server=new Server(8001);  . c" Y, [0 `. U0 x) s& P. i
    while(!quit){  
; G6 _: v& C% P: {; `5 m  y, }      DataInputStream keyboard=new DataInputStream(System.in);  9 Z" j, g" \, U
      try{    y! v5 H% T  @( |0 P
        clientRequest=server.in.readLine();    o) q9 M0 r! U5 i5 h& I7 [
        if(clientRequest.trim().equals("CLOSE")){  
6 q# R6 R$ k% R" C1 l! {          System.out.println("Client says: "+clientRequest);  
. y' p( V: @, k! ]$ e0 g9 o. k3 N          System.exit(1);    ~8 M' N* r7 F8 V+ P
        }  ( }" f) w1 O' |
        System.out.println("Client says: "+clientRequest);  % y0 q, m2 I3 A+ [! a
        server.out.println(keyboard.readLine());  
/ P8 ^9 m& @' z! ~% g$ Z# A       }catch(IOException e){  
/ E  Y  E5 R- N; F, A, V        System.out.println("IOException in server.in.readLine()"+e);  
( {; u6 X0 w' ~5 ^9 G        System.exit(1);  
8 K( z3 n' V! H! ^5 e      }  
. }# a. s& C# b9 H! H) u    }  ; t. Z$ Z; M7 ]' {; K0 ?
  }  
! g# v/ m3 g6 g+ L( k) n}  0 a1 `! Q4 f2 m, i- h* O. }6 G1 _/ F
class Server{  
$ [' f5 h) ^0 K! e$ q0 Z  private ServerSocket server;  
( x( u$ F0 U5 S3 S  private Socket socket;  ! h1 }7 v4 o  u% A
  public DataInputStream in;  0 |! [& \* C. Y; U5 V; g2 S5 b
  public PrintStream out;  
% V; v  y  P) a  f  public Server(int port){  % c. Z8 r* n- I& o; P  I5 O( I
    try{  
" e  `5 ?' r" q: ^* n* w. x      server=new ServerSocket(port);  * t3 u+ T7 d. p) o, n
      System.out.println("\n  # c- U) d  V8 u; F7 {
*************************************************");  
! N: \: W3 o3 v) Z( l& Q' m      System.out.println("\n @(              Version 1.00 97/12/30 ");  ! e  h2 g( `3 L1 X7 f  \
      System.out.println(" Copyright (c) 1997  
! ?' I/ I5 _2 M  t9 U+ C              (Lui DongBing) All Rights Reserved.");  
7 ~# N( N# C9 T$ R* `% ?      System.out.println("\n  5 D+ M3 _) a7 h  J5 j
***************************************************");  4 H, O; T, L6 u+ D
      System.out.println("\n Server is: \n "+server);  1 y- K! [6 `2 c
      socket=server.accept();  8 a% h8 x3 C# a. S) X3 R/ _" w
      for(int i=0;I < 260;i++){    // 发 声 提 示  9 k7 N# o  i" S
        Toolkit.getDefaultToolkit().beep();  6 C; b( j& O8 Q& c7 w. e
      }  & Q. H4 B  c! k5 B& _
      System.out.println("\n Server is ready ! \n");  ; m& d3 K5 P( ^) t
      in=new DataInputStream(socket.getInputStream());  
5 |  |1 ^# H- E0 C1 V2 A0 l  Z      out=new PrintStream(socket.getOutputStream());  9 I; e2 R( c' N! }( t
      out.println("We connect in "+new Date());  - w7 K; l+ L4 p# K6 `. d/ b, f+ M
    }catch(IOException e){  
9 H) G/ C+ D) J. z      System.out.println("Server is failied !");  7 Z' _; i4 ^2 k! c, Y! W
    }  
" W. z7 ~0 R3 z8 u  }  9 c) t( A1 ~: B) o
}  
5 q) r% H- r) s7 d   
& B. c% p# i/ @' Q1 Z
0 M$ c1 ?4 _( M1 d; W 客 户 机 :  & ]6 A& A7 M3 N1 M
import java.util.*;  ) @* r, M) j' D5 F  `/ @7 D, a
import java.io.*;  
4 E. o, p/ G, A5 P. Q) F7 vimport java.net.*;  
# m! f0 n( a4 E7 W+ J
" q+ D3 H* f$ Z1 c! i# ppublic class ClientT{  
8 _6 J( |6 t8 X: X7 i# n% M+ {- O  public static void main(String[] args){  
. z  q+ x6 m. f( }8 R    String welcome,response;  
, q' c# J; G, ]; R/ g; t6 y: o% K    Client client;  4 N+ \: C+ A" R2 {: K
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
* P7 ^; b- m4 A1 o    boolean Bye=false;  
! `* [' o: o. J5 T0 W    while(!Bye){  7 u+ D+ c- h& U$ q- o" I
    try{  
, |* r( W2 n; k4 E7 S: a) [2 T/ E1 \      welcome=client.in.readLine();  
  i5 n! D2 X2 O4 o1 D      System.out.println(" Server says: "+welcome);  . F1 q/ _; D5 U6 m6 V
      client.out.println(keyboard.readLine());  
: T/ o4 G+ y0 s0 K     }catch(IOException e){    R2 K4 Z  h% ]
      System.out.println("\n The talk is CLOSED !");  
8 G2 x# Q4 L2 e& k) h& e      System.exit(1);  
+ g. I5 I9 R  A    }  
5 p- g7 p1 H! v    }  & W5 y$ C# o) a! o3 F( [( K
    try{  4 N3 Q9 W! M  U- W
      Thread.sleep(200);    p7 g# h; H7 V9 N9 ?8 ?
    }catch(Exception e){  - V; G7 }+ X0 _  Z2 h5 U$ n  s; Z
      System.out.println("It is a bug !");  
( @: X% ?5 x7 w$ k; ]    }  ( n8 @0 A) U' D# C+ N5 G
  }  0 g4 j1 o0 I; s& x' w
}  $ M% S! d2 c: T: f. x  e3 e+ j
class Client{  
4 a& N& C/ j$ H) Y) c  public DataInputStream in;  $ Q" Y3 n- L* {2 D; J
  public PrintStream out;  2 I% }9 y' i& C! h1 Q6 x
  private Socket client;  5 V, o  H, b! E+ E
  public Client(String host,int port){  
5 Y# T/ o% P2 }2 e0 J7 ]6 N    try{  + T) U% w( Q* k: P2 T' G
      client=new Socket(host,port);  7 l: V4 c; J, I: c
      System.out.println("\n  ! D, d/ s) D$ A+ d9 }# o
***************************************************");  
. u( p3 H+ ]* W      System.out.println("\n @(               Version 1.00 97/12/30 ");  
1 r/ Z% p2 L7 t% [0 C# F; O      System.out.println(" Copyright (c) 1997  + m, ]* |0 i% [' g8 z0 S# l
          (Lui DongBing) All Rights Reserved.");  
% m7 T% G; D" C$ Q% n. O2 X% H      System.out.println("\n  
; H/ H+ L) ?- J3 C) f, R**************************************************");  : j, `7 ?  `3 Q/ Q0 q# r- g& G
      System.out.println("\n Client socket:"+client);  
$ C9 `3 }8 X1 ]$ u6 j      System.out.println("\n Client is ready ! \n");  
3 a2 S2 G$ D1 ?& c. \; V      out=new PrintStream(client.getOutputStream());  ' E* u  R: r; w
      in=new DataInputStream(client.getInputStream());  : w7 X5 ~) @5 G5 U# N7 W' P( f
     }catch(IOException e){  4 g; u3 M" [3 i% o+ o6 C
      System.out.println("\n IOException !\n"+e);  2 _3 s  l0 B7 q( c" i  t3 h, x
      System.exit(1);  1 Y; _2 I7 K& W
    }  ) n9 q; H( A2 Q! B" A
  }  
0 `* @1 r: c2 Y) ]3 H( I}
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-12 05:52 , Processed in 1.144693 second(s), 70 queries .

    回顶部