QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
" H+ L7 c) j) K3 K2 z, p* T
! d3 o8 p9 N% v8 E" X8 ~---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
# q! {+ z5 R! p5 Q' @4 t, B, g  O* x- L. E8 Q
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
+ M1 t( g' ~8 |% W9 [  eApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
8 n5 r( A! `+ @9 b2 R4 h0 y0 i
5 W) Q/ {+ }9 r; ?+ F8 Q---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
+ _2 g* U1 K0 }+ @6 p# I3 T0 V) @0 u, x. J$ \& N
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  7 C0 ]- y& j) M; C+ g9 U

$ T8 L- @  V) M0 s8 B3 q$ G/ ~) G2 u---- 例 程 如 下:  
2 p$ z; y9 j8 |9 L2 q1 v! h' h7 ~3 r& i# [# ^0 c
      import java.applet.*;  
: g. j4 `% C* o+ y& X      import java.awt.*;  # n! O: b9 G+ ]1 Q! m  A( D
      import java.awt.event.*;  
* j9 y( h* V- J' }4 s   
2 K; q8 B6 j6 Q* t8 h/ R
/ e* n  Z$ D* o* j      public class Example extends Applet implements  
  |3 _8 J7 a$ R# @& a' l6 c( P. Q7 Y! s                       ActionListener{ //          public static void main(String[] args){  
! i( J$ w. N: ?  v           Frame win=new Frame("Example");  " ?, j, M& \2 m& d- L$ N" O+ s  u0 d
           Example example=new Example();  ; f- x2 G8 b0 N- i4 o
           win.add("enter", example);  0 R3 G4 b# y* F& ~6 |4 @6 A
           example.init();             //            win.setSize(600,360);  % k3 ^- a' M% z( Q; i& L
           win.setVisible(true);  ' z. u* b: r' X9 s; C# d, j2 @
         }  ' V/ b( @: U2 x
      public void init(){                        //            Button button;  1 \( _! h7 f/ f1 W; K6 B$ E' @
           Label  label;  3 X) n8 _3 P- i3 O: F( j
           button=new Button(" OK "):  
/ [5 B. ?% V. H& h. U. Z/ l" v           button.setBounds(280,200,100,20);  8 t1 l* K) m9 N9 ?; H( V% c: _
           button.addActionListener(this);  
6 {/ L' |( \# M! g1 M% g           label=new Label();  
4 s# A7 j6 I8 Z2 s' ^           label.setBounds(260,100,200,20);  
# U2 W& S# C) W           add(button);  ! ~) O8 u8 E! l. _+ _* x8 w/ s
           add(label);  
' s, z* q" `5 W& ?) o9 p, A$ B; f         }  + Q$ M9 _% q/ a/ R3 \% L
       public void actionPerformed(ActionEvent e){  , I1 E3 D8 k/ g  K* n. u5 G
           Object source=e.getSource();  7 ~& p% Z: ?- U1 y" q  Y
           if(source==button){  2 l! y/ q, C# Q' ~5 b( i
             label.setText(" It is a example !");  9 m, ^5 B, {2 S4 V; s& ]+ \
           }  0 {2 s6 ]" @6 [* I: L0 k( @3 j
         }  
$ `/ p# X5 W2 c& n7 W! l      }  
+ u9 C7 B- [6 h+ w) O1 D. S( U, C$ S5 A0 H
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
5 V- `& F1 s/ {: `  t) O) a3 a3 C6 u4 x
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  " F/ g5 p; \  t

) Z$ q9 l& C; X+ y  C  ?: h---- 2. Java 中 的 发 声 提 示  
7 }  }/ l* G* x! h* s
2 {& a+ N6 ~" u/ |: X---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
: a+ J+ G9 ~: F, y: _& [2 K2 i7 d! H* Z1 n+ L
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
" [( k( _- h( q( N- b3 z( l7 X8 ?. {. U4 i' {, O
       AudioClip audio;  
1 N) T! P4 _, l* R         audio=getAudioClip(getCodeBase(),"Hi.au");  
; c0 I  j9 S6 _/ ?7 p/ q         audio.play();  
1 {& _9 U! d* \$ D" p% f" g8 f/ A  I% Y
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
% I! g& S, d: L- }* a# |& E% H$ b  y够 被 调 用 的 。  
- a  }( u3 D- A9 _8 }0 i' |( f8 t, Z) O0 p( \
---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  8 }1 e4 O% o2 S, g. A1 H) @% W

0 B/ P+ G5 a( q7 m---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
; U2 p! w4 {1 x3 F( l7 j  |- g( s" ]7 x: p
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
' h, i' t2 W  a3 j+ v1 u; c- D7 }" l  v! b$ o
---- 程 序 如 下:    H- q9 K2 k* h0 g

6 h! h; w( C8 y, I1 T0 f: l 服 务 器:  
* c( b! J0 j, Mimport java.util.*;  / P; k" B$ I7 M
import java.io.*;  
  z/ x2 B/ u) h' T0 O. h7 iimport java.net.*;  4 _9 y3 ^. L1 G( |# ^5 h3 n
import java.awt.*;  
4 z- l5 ]4 w* |& x, X4 O4 e1 c& s" i1 x+ H$ q
public class ServerT{  
1 Z$ |; @+ T+ k6 o3 I  public static void main(String[] args){  % r1 F, V9 K; E" }, B8 t8 @* y
    Server server;  
; G, y( n0 J$ P# M! g    String clientRequest;  
2 P, `: J4 k0 R2 F" j  G' g+ ?    boolean quit=false;  1 ^. ^! _, L' {6 D  n/ |- ]* {& d* Q
    server=new Server(8001);    H1 Q% q5 ?! n& }  d
    while(!quit){  9 x) V1 s0 ^1 D8 H
      DataInputStream keyboard=new DataInputStream(System.in);  
6 W1 F1 M, {6 f/ e( ~3 E      try{  " ^* b( k5 N2 @. P  q
        clientRequest=server.in.readLine();  
( a' q: a: x0 D- Y        if(clientRequest.trim().equals("CLOSE")){  
- Z( P5 g& O+ C9 E- t/ U$ X          System.out.println("Client says: "+clientRequest);  
9 j6 E) k! L. f          System.exit(1);  
2 b4 J+ B' ?% r  _) x        }  
- E1 Y& L+ Y7 Q# P' t        System.out.println("Client says: "+clientRequest);  8 b, `' t3 y7 o" ]0 @) @) @
        server.out.println(keyboard.readLine());  5 w1 i3 a% Z, `" B/ [$ Q3 Y
       }catch(IOException e){  8 z1 q" q, X6 n0 f# j. p
        System.out.println("IOException in server.in.readLine()"+e);  # u4 O' H. [; r5 U3 _+ A& M
        System.exit(1);  
- u" |+ L9 {4 B! H& A) I. k6 }) j      }  
: B- |8 [3 J6 Z) {( \, b+ V3 U    }    Y" L+ J5 l  C6 t
  }  ; D  ^& P; ^+ Z
}  ( v2 g) a  L/ U9 s
class Server{  ) Z  g. P  x$ Q/ G1 E
  private ServerSocket server;  
( H! E& P' x' q( O4 ]  private Socket socket;  
4 u. W  m- q) _4 S) h  public DataInputStream in;  
+ W- {8 s% o0 V  public PrintStream out;  
4 G1 I3 N8 W) x3 v% I4 ~2 E  public Server(int port){  ! b$ m2 p( |6 u" G9 N* _" R8 w& t
    try{    {3 m. ?# A9 r: q2 I' O
      server=new ServerSocket(port);  
! M) B) y2 N- }2 K9 F      System.out.println("\n  / F* t0 ?- J. ~+ L; ]0 x. s$ P
*************************************************");  
7 }1 W2 z: t8 R, Z+ k' g: u, J      System.out.println("\n @(              Version 1.00 97/12/30 ");  - g! @2 Y8 p2 E& K, ^; c: v, L
      System.out.println(" Copyright (c) 1997  . v) ]4 ^/ r" j
              (Lui DongBing) All Rights Reserved.");  & M& X% C* Y$ U! z
      System.out.println("\n  
( Y2 x: f$ t& f: _***************************************************");  
  |3 J. \4 Y2 V+ s      System.out.println("\n Server is: \n "+server);  
- @( z& o0 d3 m+ }$ [8 ]9 g      socket=server.accept();  2 Z, M# ~; ]! p0 u* x1 a- `
      for(int i=0;I < 260;i++){    // 发 声 提 示  
* c+ k( C. y% i$ F5 U$ k        Toolkit.getDefaultToolkit().beep();  
. b2 _; @# _: F9 q6 D( z      }  
, J3 ~# G8 r. {9 b      System.out.println("\n Server is ready ! \n");  
( k  o8 w3 R# I) E      in=new DataInputStream(socket.getInputStream());  - q' N) ~$ [4 B8 R* v: `, Z, _* V
      out=new PrintStream(socket.getOutputStream());  
' u$ h6 Y% Q; y' x      out.println("We connect in "+new Date());  + D- |1 Q+ ~" h: Q8 l& L
    }catch(IOException e){  
# Z% B% g$ @6 K      System.out.println("Server is failied !");  
$ b3 D" R  G8 s( v    }  
; `: y& @1 w- b  }  & D  M0 F% g: h) H3 I
}  
/ c2 V8 j6 e& K1 k   8 i! w2 Q. c8 X' n' ]* R/ P
6 k' N; f* F6 S. h7 ^
客 户 机 :  
7 Z- Y& o, }! {" f- m3 [import java.util.*;  # H3 x% E( [& Y) ?/ @* }
import java.io.*;  
2 @8 z8 R  X. h0 o! Simport java.net.*;  % {2 t+ q" ~0 Z/ F: t1 {7 R" X

- a) n* Y0 i% `6 ppublic class ClientT{  
0 j) n4 z1 G7 u1 y, `  f  public static void main(String[] args){  * I& V) E2 [9 D! w" g, g; h
    String welcome,response;  
# k6 x) g+ K- x/ H3 K    Client client;  
3 g. b) ]$ |" O) c* B; s- q$ ?) b    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
% H1 y7 p9 ~3 B5 M2 D    boolean Bye=false;  ' N/ M& w- u6 U
    while(!Bye){  
+ C. \, s2 Z; g7 y5 t8 v    try{  
* S% s! i9 J, V! I      welcome=client.in.readLine();  / G9 C7 s4 F* L' B  V) s0 Q" |
      System.out.println(" Server says: "+welcome);  
$ S( z9 W+ f3 H      client.out.println(keyboard.readLine());  
$ M  I  j* |& ]     }catch(IOException e){  
& Q8 h* g* q" i# B      System.out.println("\n The talk is CLOSED !");  & ^& p% L* S" w
      System.exit(1);  + ]/ H, u2 i+ n( O- C  x# L+ ~0 x
    }  
, n8 t/ p; ~/ A) }9 J' J9 K    }  ! j6 n: z, s' `0 k3 l+ O9 S' k
    try{  , u1 _1 [4 w  S5 U
      Thread.sleep(200);  
/ _9 b8 U' ^6 z- l6 @    }catch(Exception e){    S6 o3 @7 d2 V1 [+ |- i
      System.out.println("It is a bug !");  
/ P: V* R& P7 p/ W# f3 H    }  
0 Q0 L. S! @3 c6 ~# i! c  }  
/ ~  ~% W" f+ c2 L}  
5 K0 T4 u, u/ i' N" n% xclass Client{  2 G0 R# H& H8 @( ^/ ^6 e! \
  public DataInputStream in;  7 j, R9 [6 H: e% \
  public PrintStream out;  , K5 F2 ^9 C5 V  _+ c" Z! p
  private Socket client;  
2 P( e3 W1 d2 H" X& l1 h, r( q  public Client(String host,int port){  3 @" u1 q/ K+ o7 m5 Z7 I
    try{  
  @0 {4 p# K" z2 b0 x7 E3 J      client=new Socket(host,port);  
) ?. o, {2 @0 T8 M1 t1 G      System.out.println("\n    }* g4 O- G# m2 V, Y8 h! ^
***************************************************");  5 b( x' I5 g5 r- f9 r
      System.out.println("\n @(               Version 1.00 97/12/30 ");  - U, a- n0 f$ ?7 z* U  Y) s8 @
      System.out.println(" Copyright (c) 1997  
  d: q- u4 ^& ?3 D( T1 y6 }5 }          (Lui DongBing) All Rights Reserved.");  4 ?% E* F$ k' m
      System.out.println("\n  
: V. y) O# g# v  j& H& H2 f**************************************************");  
' \  t' _( e4 K  S* J# C2 ~4 e      System.out.println("\n Client socket:"+client);  6 R* b& w( }7 o* R- b4 y
      System.out.println("\n Client is ready ! \n");  , ^$ s+ Y. J% h1 S* O2 u( t0 @
      out=new PrintStream(client.getOutputStream());  
( v1 \8 y8 m8 A2 {0 E2 s. X      in=new DataInputStream(client.getInputStream());  / |, j2 y/ f8 d% x5 p8 c) k- R
     }catch(IOException e){  
& {3 G* \4 p2 c7 S      System.out.println("\n IOException !\n"+e);  - M! o; _' A/ u* D; [+ }- ~
      System.exit(1);  ; @* n6 C  g7 l0 Z
    }  0 R) p/ [# L0 F8 N
  }  
6 F- T5 E" b, v1 ?) F}
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-6-11 14:12 , Processed in 0.435313 second(s), 70 queries .

    回顶部