QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  $ N, `1 r4 f& ~; ~8 E' M! ], M+ |5 K

, X5 o2 H1 h7 C& e, g5 a! u---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
! J# n4 [7 s1 V+ _4 G2 f" E& A5 W& e3 P# G
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
3 l  }: c' Y' d; G& U: |: ?; dApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
& r& M& c4 n, G5 {/ z
# }3 d/ Z  u: ~+ f" O+ ~---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  
% t, V( E* ~8 m$ O
& h& I5 g; e) v) g& N---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
* D6 Q- r/ C5 t  Z- a% h& }' p5 K- q1 i7 N. c
---- 例 程 如 下:  
9 H9 e2 n! A+ K; V8 a( i
6 ~* Q. \; O- s" h/ S      import java.applet.*;  * E6 m: \% f; s( z1 M* a: B' i
      import java.awt.*;  8 u$ C: J+ N5 M
      import java.awt.event.*;  # T+ ]  s6 \% p6 v- B+ A( {
   
. n( r% o9 k- l+ v- G" Y) Z$ s, @5 X6 V- v$ u3 X
      public class Example extends Applet implements    s1 U  E1 C8 @
                       ActionListener{ //          public static void main(String[] args){  & c% A! v4 ?3 s& X
           Frame win=new Frame("Example");  8 I  ^% ?% k( ^3 a; F0 N4 ^+ L
           Example example=new Example();  
7 h6 B+ a( D5 m& a0 P, o- `3 [5 I           win.add("enter", example);  ( i3 j3 e. j5 L. B. y( F
           example.init();             //            win.setSize(600,360);  
9 D  i( B9 l/ B& ]1 r& r" y8 ~% s           win.setVisible(true);  
& n% \6 x' [6 M! m$ K2 U         }  
( [9 K* o/ s0 L- @# C      public void init(){                        //            Button button;  
7 p5 W* I9 V! {* t           Label  label;  
# d+ d! Y5 x! {, P           button=new Button(" OK "):  
6 }' ]  j& J+ R+ k           button.setBounds(280,200,100,20);    j1 ]  F& R) {! P* A1 b# N
           button.addActionListener(this);  
0 i" L" @2 ~- s8 v9 K1 D           label=new Label();  
* ~) b( ^5 Y  s' @- C+ S, r' c           label.setBounds(260,100,200,20);  , j: B( |( m6 F" g3 j- C% k
           add(button);  
8 P8 Z. v) O* {, Z$ n           add(label);  # I; r( |+ M8 G8 k" }
         }  , A7 T$ G; }* x" F! S( G
       public void actionPerformed(ActionEvent e){  % {1 w1 c! l# L) B
           Object source=e.getSource();  
( f2 g) q4 t/ s# ^' l. v5 F; i           if(source==button){  . F$ F& ?0 U: a/ t3 Q2 k4 ~' [$ u1 H: f
             label.setText(" It is a example !");  
1 o9 U* S$ E5 O- }2 ?           }  8 B/ W0 N+ O8 N
         }  
8 n4 M$ M. |; E9 t" c6 f      }  0 r! d! _# V, a2 P

0 p8 k2 d9 w2 h' y---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  7 t4 b$ N  y) R/ H% v+ y/ x
3 z4 P- t  R/ b2 s2 Q
---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  1 F3 |/ K) C  d8 Y5 W

' V& [# \, J; R) s" D& j---- 2. Java 中 的 发 声 提 示  
. b" x- m7 \: F% v# s
* F3 G& o. [/ \- L  L4 j2 Y4 F$ Y7 M---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
2 l& f) @" h$ Y; r: W8 |. f" u* S9 K2 r3 e5 S  i
---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
% ]( w4 b) V' Q& M* v6 c$ ?
0 E/ Q- F0 E6 ], c. u       AudioClip audio;  4 J" P: D# v* K; K1 _
         audio=getAudioClip(getCodeBase(),"Hi.au");  
4 l  f' [" P: U1 D' j         audio.play();  
+ K, o2 S5 m* t5 j! u4 p  T# q! M! P0 L* O) j! F7 M3 F8 {
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  , s  |5 s9 w% B5 J- F/ P
够 被 调 用 的 。  6 T# Q2 I2 B2 E( w: A

- N. g. p* C$ Y9 c. {! N---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
% c! d  N2 l  `  G+ {% r* B; }0 |- E! g7 o/ t
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
# Y; P" n1 c, o8 f4 L3 ]
- j! T8 B5 Z& ^---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  . c. V) j5 H+ _. V- |

8 m9 w. ?. H( |& R) ^; h! p9 O---- 程 序 如 下:  
3 J% ^4 f) \4 k( n/ v0 [! I+ K% \& T: s! Z2 l
服 务 器:  8 o9 e/ K$ t) h6 n( a0 o: u& g7 v# Q
import java.util.*;  
5 ^# b; n8 v3 U5 w# t: j+ L( q' Limport java.io.*;  ) a4 v  c5 a. S, {& @" h# @+ b
import java.net.*;  
, p3 W8 S$ p  B1 j8 }- D* Yimport java.awt.*;  5 W' P) B6 d' J- \8 k: @
; s3 g/ O. J0 @. l
public class ServerT{  4 \2 D  {% `) g2 r8 V/ i) e
  public static void main(String[] args){  
2 U" y4 C7 f6 ^5 l    Server server;  0 j& e. {$ @8 M& K' Y
    String clientRequest;  
' y6 \5 U! g  d& F  r    boolean quit=false;  
# G& O1 {; h) P6 e: o& g4 }; w6 d    server=new Server(8001);  
: Q( p0 Z7 G7 A! u% m- h    while(!quit){  
' T$ W$ `* B* {0 I. ?      DataInputStream keyboard=new DataInputStream(System.in);  
6 E$ O& X$ C6 A3 w6 _      try{  % c2 W6 v+ u: ^' _+ v
        clientRequest=server.in.readLine();  / I3 q# M; A  S
        if(clientRequest.trim().equals("CLOSE")){  
5 s1 ~0 @4 ~6 @& r          System.out.println("Client says: "+clientRequest);  
) J4 r- A  N; \# q, D+ E( i5 {" I          System.exit(1);  2 L9 w4 w; H* ?% u3 h
        }  
6 f* p) P9 t, l- s) i, u8 Y        System.out.println("Client says: "+clientRequest);  % d! a2 W1 J( Z: `' r
        server.out.println(keyboard.readLine());  
  a! g, k, ]4 k       }catch(IOException e){  0 u, z# S0 o" C
        System.out.println("IOException in server.in.readLine()"+e);  
4 a8 k; h1 r2 C/ a        System.exit(1);  
! V; U* p7 c4 m8 u2 B      }  8 M4 S# D6 ^/ C9 y: f+ _
    }  
. y2 T1 A. S* q% M) K2 w  }  : [9 E; X/ P) }$ _  T) L
}  $ O) c4 N8 x4 m( \
class Server{  
* V. k3 a0 b5 V  private ServerSocket server;  
; O  G( w" i5 g) m6 p  private Socket socket;  $ u2 o$ i, j' Y1 t  C6 q! \
  public DataInputStream in;  
  }( \  H; \2 I, {) n! b  public PrintStream out;  
6 C- _2 w# G- n; D; f' `2 I9 d  public Server(int port){  
: |, h. a3 R/ J0 j/ C6 ]3 X# a    try{  
1 k2 y6 F+ k0 J6 U- n; q/ j( F      server=new ServerSocket(port);  
5 C& ^& p/ u7 u* b      System.out.println("\n  3 f0 o; [. l2 U9 p
*************************************************");  " M/ h7 x7 g( Q' r8 H
      System.out.println("\n @(              Version 1.00 97/12/30 ");  
/ p" N! N. E0 d6 }+ e+ b      System.out.println(" Copyright (c) 1997  
3 R7 }" e/ J: @              (Lui DongBing) All Rights Reserved.");  
' {( D. _0 x: d8 j% k6 J      System.out.println("\n  
! `0 I! @1 N  S2 B***************************************************");  
- ]" B! ^% n7 Z0 V      System.out.println("\n Server is: \n "+server);  / U" Q, ]5 y  B4 ?
      socket=server.accept();  0 G: [$ T9 d+ K6 W0 Z2 Q/ R: O
      for(int i=0;I < 260;i++){    // 发 声 提 示  
- e9 ~( G8 {; R( T        Toolkit.getDefaultToolkit().beep();  8 H- v* \9 f) g3 S- ?
      }  $ n1 x$ B! j+ Q7 y
      System.out.println("\n Server is ready ! \n");  & f$ q2 R! B8 D, k% c, t7 c
      in=new DataInputStream(socket.getInputStream());  
) c( {" _/ O# ^      out=new PrintStream(socket.getOutputStream());  - N* _% z9 h6 O- P( w4 U
      out.println("We connect in "+new Date());  
% ?7 o5 Y( J* f' w! |% {    }catch(IOException e){  4 L+ m6 g: O- ^3 E5 z% ]0 M% g
      System.out.println("Server is failied !");  
: k9 I! A$ |3 w8 H! o    }  
% O2 ]; ^- _% X0 u2 y* r" t  }  
( C  D( q$ m! d+ Y0 U  Z: a}  
7 \) B9 Y. b4 |3 n) H   
5 _  ^% h5 B3 v* f
' {5 ~! c5 j& `7 B% l" | 客 户 机 :  
% C. Q( L, [# K! ]0 h% p3 c" Uimport java.util.*;  # Z. |" H5 J& W* M) Z: Q2 V5 w
import java.io.*;  # d0 j- G, j5 B
import java.net.*;  
8 g9 w" r# x' i% W) O  ~. J: l6 A5 G, I+ |2 t- k& Z3 y1 S0 H% Y
public class ClientT{  ) n4 z. J, c  p8 V+ r4 x8 u
  public static void main(String[] args){  
7 p0 h) E+ b% K. ?9 K$ a    String welcome,response;  ! m. M$ _7 C- S1 _% h) |3 I
    Client client;  
' G+ Q- A$ g/ g* O) C; A: w2 E; N    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
" m2 K; n) S$ F    boolean Bye=false;    S/ A$ d0 ~* D+ n/ j: V
    while(!Bye){  & i" ?  F) ?# \+ S& A1 P0 _8 V
    try{  ! J* q5 i9 P+ g+ N
      welcome=client.in.readLine();  / S( F* m& q5 [; W* @9 V0 c
      System.out.println(" Server says: "+welcome);  
* j; C! l9 t+ q( g2 m3 T; J. M      client.out.println(keyboard.readLine());  2 g% H5 l0 p5 k7 A
     }catch(IOException e){  
  b; Q+ N( m* E0 y      System.out.println("\n The talk is CLOSED !");  " d- @. l, v: F" s6 E: V  ^
      System.exit(1);  2 x6 f+ O! U) o
    }  
+ l/ B# @; r5 W! c    }  . ]2 t. v. ], ?/ \
    try{    o5 L) C" z3 Q- Q
      Thread.sleep(200);  
# d1 ]" `) I- b9 \  B7 e    }catch(Exception e){  % {( M! k, g( c! b
      System.out.println("It is a bug !");  + Q: ~3 w$ r4 S# s8 y( V# q
    }  
4 }- Y. S, j5 v# F  }  % r5 V# [1 p2 N; D4 l) N
}  
% T( i6 b* p7 w8 \6 Zclass Client{  : M) k. k- E  d
  public DataInputStream in;  ! v9 V9 ~( K' M2 g  Q0 M. N4 _
  public PrintStream out;  
( u1 x9 y( C3 [& {+ X3 `  private Socket client;  ; i: C- k& ?! u( x: {- ^
  public Client(String host,int port){  
' e4 |4 A  _1 k) K0 e% R0 ^    try{  
( q8 Y8 s) A& l4 ]& c      client=new Socket(host,port);  
9 x1 f% g! y. M. H& ~& h      System.out.println("\n  
; g" [2 `- B5 N+ `***************************************************");  
! |9 E4 E* k. X      System.out.println("\n @(               Version 1.00 97/12/30 ");  
/ D: G0 ~$ J2 g, z! j( P0 E5 p      System.out.println(" Copyright (c) 1997  / X  o" B  v$ B) R) `
          (Lui DongBing) All Rights Reserved.");  3 q9 F; u5 m/ H1 J
      System.out.println("\n  
% g/ f+ D7 o/ w/ M; \3 h**************************************************");  + ]" Y4 P: k1 C+ P+ y
      System.out.println("\n Client socket:"+client);  / |# b, t- h- p- c; [  m7 H
      System.out.println("\n Client is ready ! \n");  $ l* d- z9 a" |
      out=new PrintStream(client.getOutputStream());  
9 C/ O2 h! l6 m( D) p5 H$ U4 \$ p- M      in=new DataInputStream(client.getInputStream());  
5 ~; b, k. g1 j4 }( n     }catch(IOException e){  ( Z! R; L5 ^# T2 h2 k: Q* A( n) I3 {$ k
      System.out.println("\n IOException !\n"+e);  , Q2 A0 H7 P- d' o7 m3 w# ]; {
      System.exit(1);  
6 r8 B$ j  V  d  h- ~1 t" r    }  
) t# I9 w& F2 J  }    V5 V3 B' Y% v8 K0 L. d
}
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-27 06:54 , Processed in 0.506329 second(s), 69 queries .

    回顶部