QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |正序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
/ z) L# z0 G& a7 V; h# r/ ?2 _" e1 V( w0 L- B, ?/ w
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  
0 Z. m6 m8 @, Y* }5 s! M: o* N' T& i/ H  j5 N8 S! _
---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
( d8 _$ M# C4 ^$ l+ }6 YApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  
; O( `7 z# b; @! u+ J: H7 {& A( m" _- Y9 S
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  2 n$ F$ v% D* ~5 L* Q
; q$ G+ y4 b: n2 u) ~' U8 G
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  
/ B& f: R) _  F( P
% C' N- r4 B4 b2 {8 M  {---- 例 程 如 下:  3 |. A9 Z$ G7 T/ d6 R
; M$ m3 H% c, q$ R1 D/ S# ^
      import java.applet.*;  
/ Z2 i/ u5 P: u: v2 u      import java.awt.*;  * T# V/ h& x" h5 b( N. k
      import java.awt.event.*;    ?: [9 o' I& q' O1 I5 b
   
0 J1 D* L0 e" i  C$ O$ `& l
3 x9 N$ \& s2 N+ O0 {/ n      public class Example extends Applet implements  
0 B5 i4 W: U; X; @  @' A* w8 U  r" l8 ]                       ActionListener{ //          public static void main(String[] args){  
0 a2 o* _5 V& Z' Q           Frame win=new Frame("Example");  
# Y# o. w6 Y7 L5 ]) r           Example example=new Example();  . \: C; f' y$ P( V; q9 [( B
           win.add("enter", example);  
9 L2 i) h$ X2 C$ l& v           example.init();             //            win.setSize(600,360);  ! T* H' g' R/ s. z5 L. ]. U
           win.setVisible(true);  ; R7 h7 _0 ]8 ^7 O: a! ]+ Y
         }  
8 i" E# d1 d) {, S      public void init(){                        //            Button button;  $ g& W& x* l8 G( s7 Q5 c
           Label  label;  
: ^' b- A6 S1 R' {# _" F           button=new Button(" OK "):  ! [0 I# E1 V% e& E, X
           button.setBounds(280,200,100,20);  ! R6 [) c8 `  T
           button.addActionListener(this);  7 A9 d/ t) z# X3 u; ~  i
           label=new Label();  
8 o1 @8 O; V9 s$ O  l# a; N           label.setBounds(260,100,200,20);  
* h( J2 K: d3 L. b$ o           add(button);    C# K% U: R# Z: m, |
           add(label);  0 ~1 I- A1 S% c  E2 ]3 D
         }  ! y; l- t/ A6 i5 l/ `$ @! v& k
       public void actionPerformed(ActionEvent e){  
  f1 H$ }3 x6 S           Object source=e.getSource();  - h+ W3 ^9 M3 Q: G+ P; D
           if(source==button){    V$ E. s; q- m7 N+ D) B* ^3 l* W
             label.setText(" It is a example !");  9 O7 |- ]5 D, {8 [8 v4 z
           }  
0 B) I5 t  q9 i, M( o         }  
/ X% l( @# r+ Z7 G: W, {      }  # B" M" X- ~2 `3 o1 z/ p

/ n8 w3 ]; e# A! r$ y---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  
( M  p3 ^* u8 t6 q& h1 w" `
6 y; k; D& ^. n: V, p3 ^! o9 R---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
$ n& i7 g$ G6 i
+ }8 A! ~' h. i- c" ?6 J  A---- 2. Java 中 的 发 声 提 示  
# b* b  b- ?9 I4 C2 ]6 a; L/ h- f" S# w
---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  8 o: O, l5 P: [3 ~8 ~- }

% H/ E# e8 k* |. k# N: H6 M---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
; q; C5 p4 L1 t( c+ I4 [( W$ `" A
9 @0 `  R, |4 |; j) z       AudioClip audio;  
7 z2 @1 I- W' A; G' I. T         audio=getAudioClip(getCodeBase(),"Hi.au");  
4 }2 [# Q" g6 B1 h) u$ Q         audio.play();  4 L+ g3 b) G+ L4 u) M$ e

% x0 m/ D, r7 p( W/ z- D5 H0 j% j( z. v---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  
& l; \4 U& `$ }1 P' |% e2 ^够 被 调 用 的 。  
" @6 L! L3 _4 N; i- H4 c; P
1 }8 C( f! n0 Y+ U---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  # \* P7 R- x  f
" a5 s! v1 d# K3 m* {
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
1 K- Z" f6 K' @; r. P+ x
- k- S7 a+ ~# g$ `---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  7 f6 D9 A  U( j- z# A. b
2 c# |  f5 T. Z9 j5 i7 `- N% C
---- 程 序 如 下:  
" p( }7 i9 A, ]  j) f- C3 h+ i9 p; r5 J5 [' T
服 务 器:  ( h. V1 d  L" W! L: T
import java.util.*;    j# J/ O# W8 k: f
import java.io.*;  5 i4 a. Z  X2 H: p# q) F, @9 w
import java.net.*;  
5 j1 ~5 d8 G; w1 Z% ?) oimport java.awt.*;  
% Q" t  t2 h; M0 N/ S5 \$ y
& t$ S9 I: [7 \public class ServerT{  
( j0 I( p% t: Y, W  public static void main(String[] args){  + ^" C7 X1 N- i: @+ K  C
    Server server;  
/ ~' A+ e( f( l) [: U' r, `    String clientRequest;  5 a7 y$ a& Z$ v* a1 _( t  i" P
    boolean quit=false;  
! c  L7 ]  b/ V  J3 e    server=new Server(8001);  
3 \, f' c7 r6 T8 B# J' R2 m: ^    while(!quit){  
- x  s( ~- B$ Z! V      DataInputStream keyboard=new DataInputStream(System.in);  9 k! X- Z2 V6 O( t, ^  K
      try{  ' V/ C0 h( X" x" u
        clientRequest=server.in.readLine();  ; @: k* `! F) c- K% b3 I' H% e
        if(clientRequest.trim().equals("CLOSE")){  
" h8 c. R* h5 w" ]- M' q          System.out.println("Client says: "+clientRequest);  8 V& O$ ?4 C$ ~/ D/ d
          System.exit(1);  
1 [6 \' ]2 O% k* Z0 i  G; h* J        }  : \: {& z8 p* r3 F% v! u
        System.out.println("Client says: "+clientRequest);  
# Y6 U: ]: y+ m        server.out.println(keyboard.readLine());  $ X# r) j2 U9 g
       }catch(IOException e){  ; ^  Y7 c( I* j
        System.out.println("IOException in server.in.readLine()"+e);  , {" H- |$ Q  ?
        System.exit(1);  ; L& \. {6 i4 Q
      }  % i3 R! H2 j: ?& C
    }  ; N* p0 J0 H1 X) r, x; y
  }  4 r# x! v5 @# Z$ H3 M* y8 y
}  
1 \% M3 G8 d5 m+ cclass Server{  , F7 m  T1 C4 k5 ]2 a% Z
  private ServerSocket server;  
( o+ w2 k6 q4 ?, _3 W8 d. A+ Z  private Socket socket;  
/ p3 q- k' f7 S  e2 C% u. r  public DataInputStream in;  
* W6 t4 N  K4 L: A3 k  public PrintStream out;  - c5 _& o& L: ]; L0 J' t
  public Server(int port){  ( x7 e& V" u& k* E1 Z0 V0 D
    try{  
7 P# ]# I. Q: A- V  o% Y      server=new ServerSocket(port);  ( p+ K. V( \( x0 {3 p- O" a
      System.out.println("\n  
( ^( ?# C$ r% ?7 r" h& k$ ^9 N3 {*************************************************");  3 m$ A. R2 W/ Z' X( g5 V
      System.out.println("\n @(              Version 1.00 97/12/30 ");  : m% G/ N0 S" @
      System.out.println(" Copyright (c) 1997  
, k5 B- \  o* f6 |  E6 R              (Lui DongBing) All Rights Reserved.");  
4 j( A* j+ h7 ~      System.out.println("\n  
) u7 ~" k" h0 V5 [***************************************************");  ( Y0 k$ o7 v, y% x
      System.out.println("\n Server is: \n "+server);  6 W# ]) ~) X# L: p  V" o
      socket=server.accept();  
7 w* E( p$ K8 @" B4 y. p      for(int i=0;I < 260;i++){    // 发 声 提 示  ) l4 j  `2 j# I1 P* {' N8 A7 `
        Toolkit.getDefaultToolkit().beep();  6 Y& X4 K1 l- w$ O( b
      }  
! G2 v& W6 ]# P" x# L& B      System.out.println("\n Server is ready ! \n");  ( j* N4 c: C1 r* P2 ?
      in=new DataInputStream(socket.getInputStream());  
' P; I: Y2 Y" M7 C      out=new PrintStream(socket.getOutputStream());  
3 v0 S% R! X5 N: @+ |7 v/ U      out.println("We connect in "+new Date());  
, q/ j( H3 e  [' \! z3 i3 z    }catch(IOException e){  
1 D* u8 e6 h( t5 H      System.out.println("Server is failied !");  ! {. G' m+ F' Z6 c4 O; U; `4 W; ?: v
    }  
& o$ B0 E( K& f) j  }  
* ^  S# Q6 X% l# x# j}  7 Z5 L) u( q: e0 H7 b3 k; Q! q6 M1 g
   
$ Z& [( r4 @) l
, w( `0 W& j( ^* F& h/ c: i 客 户 机 :  
4 f; y4 |- W# c" @$ ~import java.util.*;  4 T% u: `0 |8 s) {) C
import java.io.*;  
- k# ~* p* U# I1 ]5 oimport java.net.*;  
1 c* o- D+ X4 f  k5 Q* K% ^6 f# C6 r7 S7 ^
public class ClientT{  5 I9 V* S& F! r0 J& l% p$ K5 @8 Y, H
  public static void main(String[] args){    d# i' u& @/ G
    String welcome,response;  ! |  y; E  e2 J& T6 V
    Client client;  & h; G. B# F$ e1 k, N. o
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  / y$ ?; ^9 B; {/ m; S0 I3 _
    boolean Bye=false;  
0 R$ ?, i* E. a) M- z8 J    while(!Bye){  
8 Y9 e6 t; l# R) r    try{  
! i! a" a4 v$ O% Z+ @      welcome=client.in.readLine();  ) p& Y/ |" }8 l1 u- ]
      System.out.println(" Server says: "+welcome);  
4 w& e, p9 k/ M, y+ g1 R      client.out.println(keyboard.readLine());  
+ M. Q( N# j9 L9 V5 I, j6 h     }catch(IOException e){  
/ E0 }7 h3 @& E) f! q      System.out.println("\n The talk is CLOSED !");  
% g1 v- x( M$ A/ u      System.exit(1);  
3 u9 E. ^4 A) k2 V    }  
- N. K: G, m3 ~2 [% H6 I    }  7 D$ a/ q: _! q2 t+ I) n
    try{  
$ F2 V! b3 X; H: x4 V/ \      Thread.sleep(200);  
( g; \+ i  P( P0 r: g; @    }catch(Exception e){  $ g- Q' T8 |5 F8 o& v& b! L
      System.out.println("It is a bug !");  
/ V; g1 i; T8 b1 S5 \; d' T3 t    }  
- Y# G% w: b1 Y  }  / R; y. m& A# `( V% K
}  ! Q$ N: [$ y( J' F) }
class Client{  
8 J$ M: w1 d9 z  public DataInputStream in;  
' ~( X* |, f- |+ n# v* S) s6 v  public PrintStream out;  
9 w: I7 S$ ~$ t, Q3 p  private Socket client;  5 M# s. B8 P( n( q, E$ K" B
  public Client(String host,int port){  
4 C& f6 w* H3 K6 S! @  W    try{  
9 H! L) h' ^) T7 [3 B0 p6 o) S      client=new Socket(host,port);  
5 C1 e: R& P  J' K' y      System.out.println("\n  ) n% e( f3 Y5 |& b/ z: ]. r
***************************************************");  
4 S* r& r: r$ S/ e9 k' l  ~      System.out.println("\n @(               Version 1.00 97/12/30 ");  2 k% |1 m1 g, y. y, z& K! X- _
      System.out.println(" Copyright (c) 1997  & g" q- C& Y5 r
          (Lui DongBing) All Rights Reserved.");  
/ i2 ~' ]9 P1 L. g5 t/ Z7 _      System.out.println("\n  ; X) f; K5 ]& J* r' I4 \+ A
**************************************************");  $ G/ Q6 |. ~8 C+ Q( e, A6 F
      System.out.println("\n Client socket:"+client);  
3 N) `/ x* A  C/ q8 a      System.out.println("\n Client is ready ! \n");  - L0 p' w1 D& I% W4 Y
      out=new PrintStream(client.getOutputStream());  
1 K- j& o; I: m# P      in=new DataInputStream(client.getInputStream());  # `9 u( l' r7 Q, ~9 r, R% d6 ?% D
     }catch(IOException e){  
; n/ V! Y( P0 \) G) o9 Z0 n- w      System.out.println("\n IOException !\n"+e);  & l& F" }7 N, l3 D1 x- D
      System.exit(1);  
$ s( {, X( T; e3 g    }  
) m. V5 L. P3 y9 E8 W( n7 |9 h  }  
# J' d$ C( o, `: l; e/ X& y+ p}
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%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-11 18:36 , Processed in 0.445882 second(s), 70 queries .

    回顶部