QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
' h3 ]9 z# e! c. {  p* i: P
/ L8 n6 i7 k5 Z* K" B( a6 T---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  ( c$ c- `7 z: z$ L4 z% C
& j/ F% Y/ }4 s
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
$ ^9 Z* Q& v+ u% }6 S  x3 o$ eApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
/ t2 c: R+ b# |9 X8 p8 S, z2 a0 }  V+ @% n! V
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
$ L( A6 j1 Q3 V. Q( C  k9 q$ Y- V7 I6 s' h6 w7 x
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  9 g4 O2 e0 E& I$ B0 q

6 n: U$ g" n$ n* U0 m$ j---- 例 程 如 下:  ! I9 ~; \: J3 |) r8 c/ n
  m% p9 I: `3 ?  E% v* w
      import java.applet.*;  
. G! R. Y8 E# ?5 _$ k5 m      import java.awt.*;  
' U( X5 g( d  @4 h# f! @7 c      import java.awt.event.*;  " B$ S( U* \* B, n3 X: l, G
   * x: P8 R# ^# d- r7 ^& n% ~

0 b* t, Z% m- D4 r) w      public class Example extends Applet implements  
+ A; u! @" w1 ^/ }                       ActionListener{ //          public static void main(String[] args){  5 F1 o* Z5 N7 `: K
           Frame win=new Frame("Example");  
0 r& w' G1 T. M           Example example=new Example();  8 ^9 f1 s1 n# V2 c8 c! }8 t
           win.add("enter", example);  
' W, U, c  @5 S8 G: ^! b; F           example.init();             //            win.setSize(600,360);  # e7 R1 _. N" M& i! A
           win.setVisible(true);  
# F3 h( b7 M4 Z5 I         }  4 F6 t$ i; w% U1 v
      public void init(){                        //            Button button;  0 V$ Z  v7 Q( d  C/ @! u" f2 Y2 m
           Label  label;  5 E1 a4 {( {  w4 N, r+ ?1 K7 y
           button=new Button(" OK "):  - A0 u# W- m. V8 z. v/ w. g4 T" I  W
           button.setBounds(280,200,100,20);  " `. l! }/ C# @* C
           button.addActionListener(this);  
) P/ [% k" x* Y( G1 f           label=new Label();  2 J. B/ {7 C5 z0 v
           label.setBounds(260,100,200,20);  & }" [. }+ S+ t* \) D4 G% e
           add(button);  
) G- B! g  {3 Q$ ^' ~$ P           add(label);  
6 C4 {& P8 G3 F" ?: ?/ k# r         }  5 g. a1 E6 w" h* P3 r, [6 b1 Q
       public void actionPerformed(ActionEvent e){  
# W2 \$ s4 Q; v( c! k6 y, G           Object source=e.getSource();  4 F. x$ s% D" J$ Q
           if(source==button){    Q! X( @6 R9 e6 ~% A; K$ L8 J
             label.setText(" It is a example !");  
" Q5 {9 z$ O" ?# n3 f6 R           }  5 ?7 T! [& h/ `3 R
         }  
' H9 i# z6 K; ^      }  0 E( R6 T/ X+ W% E

! f- `5 R: k- [6 n% ?& a---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
/ C" n& ?" ^  E% l) ^
5 {8 ]. ?% I# D/ a4 f---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  % n4 ^/ [. _+ N$ ~0 X$ a. Q; F
$ z% a5 x0 }+ ?7 O/ n& K
---- 2. Java 中 的 发 声 提 示  
( e- B& r3 I9 V6 o/ f6 E
4 o) m) R7 A8 j0 ~: Z2 B* f---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  1 l& G$ T0 p8 t9 Z3 I

, O' C# Z0 p$ |0 `---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
7 m1 V+ Z1 S) h& p
7 @+ E+ S, f6 G" ~0 ~       AudioClip audio;  & \, D: \; A, v
         audio=getAudioClip(getCodeBase(),"Hi.au");  
6 k- }0 y+ o  C3 N$ p' p( S         audio.play();  2 t8 y' q# X8 d) i/ C
" j" Q2 P- U# e' n; i0 `. S
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  1 w0 P! b2 d7 O3 Z! R6 Z( P, n
够 被 调 用 的 。  
  D+ s( S( f9 T
7 h. ]$ }5 Q/ b% `---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
5 y  `0 U% M6 N9 ~( ]) f# a8 E; c# S; Q$ [9 Y
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  ) q) W# D5 v/ c4 R6 ^/ B& T

$ C2 Q% L, ~9 C6 u& y. s* B---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  0 T* G( N5 u4 m, M* |

" `) Z. @! D9 i( g---- 程 序 如 下:    J" K. Y* W+ m( z8 ^* ?, ^

7 ?& _# s% ?) _# R 服 务 器:  
5 `: m0 L- Y! W5 [) B7 A6 |import java.util.*;  
9 H1 R; k7 Z- h0 V0 t" P# mimport java.io.*;  
$ c7 I! z% S  z, dimport java.net.*;  6 @& ^3 ~7 r# W
import java.awt.*;  
; c. B; d0 A  k1 V2 O8 W1 a. a# R+ d6 r( ?
public class ServerT{  / F4 C8 J1 e, e+ Z3 H6 C
  public static void main(String[] args){  ; t; h2 ?+ B- x+ N
    Server server;  
; J+ d3 |/ ^& h+ f# w    String clientRequest;  + E1 v/ j2 z! T" [% X
    boolean quit=false;  
0 F: w8 h" e' ?    server=new Server(8001);  
8 j# q4 j5 p5 h/ ^" m% p6 Y  S    while(!quit){  6 k9 ~: W/ X6 g
      DataInputStream keyboard=new DataInputStream(System.in);  
- u+ v7 k) b; q! A9 k" M      try{  % f$ o* Y( [7 y  Y1 r- a1 `& ~3 j4 ~; k4 E
        clientRequest=server.in.readLine();  
/ u6 b: l+ T) @: E        if(clientRequest.trim().equals("CLOSE")){  1 _" T% D0 u1 H, h  i
          System.out.println("Client says: "+clientRequest);  : P1 @& l6 |; H7 h4 H
          System.exit(1);  8 s/ a9 g  Z( b. B0 h# L( k! J7 Q
        }  
1 e8 T+ V3 Y, s        System.out.println("Client says: "+clientRequest);  : O( {+ H& x7 o, M  O1 S$ d  \
        server.out.println(keyboard.readLine());  
) Z$ o& `1 e* y8 A% Y       }catch(IOException e){  ! @2 d" O8 l3 |
        System.out.println("IOException in server.in.readLine()"+e);  
4 u2 u" y4 h6 e- L, t        System.exit(1);  
' w- b; F- h. j/ X. S      }  . d9 g5 ]1 ~; w, _* M7 s
    }  - d' y. M; `1 p1 F" `' {" r+ h
  }  " l: V( d- V, R6 [% e. U
}  8 K+ s, u" x) ]3 h. R; [- Q. \% K8 K
class Server{  & i3 R" F% e4 _  m
  private ServerSocket server;  ( z9 W2 ?" }" I4 u- T( t
  private Socket socket;  
5 j3 r3 f* H  Y( P  public DataInputStream in;  
' d7 _1 `1 k& j  public PrintStream out;  , \. q6 x- p0 C  K5 F+ |
  public Server(int port){  ; _5 F2 `1 c, @, J6 K
    try{  
! ~0 z$ H# E9 n: K& f      server=new ServerSocket(port);  
8 p! V) u0 d+ |% E8 ]' _1 `+ h      System.out.println("\n  $ @5 X3 z2 F8 x
*************************************************");  7 M7 n% B0 i- M& R' R- }9 Y/ s
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
6 j$ m( Z4 h7 d' t* ]      System.out.println(" Copyright (c) 1997  
' `& H! w5 j) S/ |7 ]$ x3 l1 O              (Lui DongBing) All Rights Reserved.");  6 ]( N# d7 u& r6 O8 \) E& u/ a
      System.out.println("\n  ' z7 S" [; P$ y9 V! e0 {
***************************************************");  
# c0 P2 Q2 l6 w$ T6 q      System.out.println("\n Server is: \n "+server);  % b, a6 c/ `: `& f
      socket=server.accept();  
9 b8 v; r6 A& l6 l" f      for(int i=0;I < 260;i++){    // 发 声 提 示  % S6 t) Q3 }* Y$ G: m- |0 E
        Toolkit.getDefaultToolkit().beep();  
0 ?" T' ~3 ]0 q$ x      }  
1 X. a+ S$ K+ Q& X# [& D' `      System.out.println("\n Server is ready ! \n");  
3 l" c7 w8 E) O4 o      in=new DataInputStream(socket.getInputStream());  1 q" Q) V$ u7 B4 g: M6 w- n
      out=new PrintStream(socket.getOutputStream());  $ U2 l( r7 Y9 e& w0 T
      out.println("We connect in "+new Date());  
7 K2 V0 ]* ~) N& W5 o% f* `    }catch(IOException e){  3 {' B  w% {) Y( g' }4 d4 A: A9 j6 y
      System.out.println("Server is failied !");  ' I; s% k" X+ Z! {: d: v" W' A
    }    B0 b1 @+ M: i7 I
  }  3 p8 x: y* @. M
}  9 X* S" C  W& _1 M( w. x+ N
   $ J& p4 r/ L( T
; U; O$ m+ p9 ]' ]6 b" }, _& }, X' v
客 户 机 :  
; C! `, e4 i4 W: u/ m2 f. ximport java.util.*;  , g: P$ \" r5 }( i0 U5 Y
import java.io.*;  + S  o1 k! e% i
import java.net.*;  " {9 b8 z5 n+ F' h/ q# N

% M1 r# _  ?3 S' a" U3 Mpublic class ClientT{  . N0 b# \% q2 H+ d
  public static void main(String[] args){  
8 `' p% V" l9 `7 u, K; h    String welcome,response;  % t" |" g: N( G$ x
    Client client;  
3 x! A& B: h4 @; F- H- }. J    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
( {. L* n/ j  _: o    boolean Bye=false;  
1 {9 J% G  J# h& T    while(!Bye){  9 H) @* S) P% g0 F
    try{  7 l- G& n: X. E7 J) g& n
      welcome=client.in.readLine();  2 u5 J& ^- t9 z3 s
      System.out.println(" Server says: "+welcome);  ' e$ R- z5 T) k7 B
      client.out.println(keyboard.readLine());  
  |+ [0 C& \' j6 s4 s     }catch(IOException e){  5 L# g8 I9 }9 X2 d# K/ G
      System.out.println("\n The talk is CLOSED !");  
* r6 r& F( Y# ?* [; q' o      System.exit(1);  - P" E) q3 t5 s: [$ F8 g4 \2 {5 q/ r
    }  0 V3 C- y2 P1 x/ v
    }  6 q/ t1 H7 m, D$ H, r
    try{  
" t; N7 Z, X8 U3 e& l) ?; R% D      Thread.sleep(200);  
8 \0 w5 f( h" d5 q4 X    }catch(Exception e){  7 e+ r" R7 Y! ?2 J- {8 Y* j
      System.out.println("It is a bug !");  ) e# d1 {  I* L8 Y! H  K
    }    R8 y) _& b% ?
  }  $ o) x. ^, C+ a  x5 ^
}  % t& F$ w0 s8 W* c5 V
class Client{  
) C4 o9 g: r, s+ c  public DataInputStream in;  ) L) t9 z. M! x; N
  public PrintStream out;  : |1 x9 |6 Q7 p" x6 G* G
  private Socket client;  
5 \" I' e9 l( l1 C/ `' V  public Client(String host,int port){  : [5 s( j9 ]& Q+ S; g: _/ ~
    try{  1 t1 z0 s+ _3 w' _
      client=new Socket(host,port);  
1 V- G# r: D, b. p' Q  c      System.out.println("\n    d3 g1 x4 U. K
***************************************************");  
6 k2 z% F; i: N" j6 I8 x4 S      System.out.println("\n @(               Version 1.00 97/12/30 ");  - p  l6 j* g5 z) U8 t# Z$ V
      System.out.println(" Copyright (c) 1997  
( r  s# L7 \. E/ I& [5 d& \          (Lui DongBing) All Rights Reserved.");  
6 }) x! o# ?  A0 ^) _      System.out.println("\n  
2 @$ S+ s. e3 M. {5 d4 f**************************************************");  4 E$ b; v3 S8 q: n1 d2 v' s" E
      System.out.println("\n Client socket:"+client);  
. ~. C& H& Y8 J! V. @      System.out.println("\n Client is ready ! \n");  
" D- ^  v5 R3 G: C- h6 q      out=new PrintStream(client.getOutputStream());  
. o7 k3 O8 D* T( q* z& h! g      in=new DataInputStream(client.getInputStream());  " |: s& r& d' R: b, E
     }catch(IOException e){  
0 H1 ]( I5 W4 Y      System.out.println("\n IOException !\n"+e);  ' O+ i' u; s1 F0 q, s6 h5 J
      System.exit(1);  6 j) U" \8 G/ B' g1 }: |
    }  4 L" Y% D" X) i( o2 p& A
  }  
9 \$ \% U4 g( r}
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-1-11 08:25 , Processed in 0.704827 second(s), 69 queries .

    回顶部