QQ登录

只需要一步,快速开始

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

[转帖]Java应用技巧

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

206

主题

2

听众

882

积分

升级  70.5%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-3-31 01:14 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
---- Java 是 一 种 建 立 分 布 应 用 程 序 的技 术 。 它 是 网 络 编 程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯工 具 扩 展 到 能 够 运 行 成 熟 应 用 程 序的 网 络 。  
! |; ~9 F; y5 `7 k% z" ?  ?% r& Y7 k- g% p* i; ?! B+ O
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,Applet 就 是 嵌 入Web 文 档 的 程序 , 而Application 则 是 所 有 其 它 类 型 的程 序 。  ) K- [5 [# [4 O; a4 B# ?

; o4 B1 N: W$ p" r( [1 E' v---- 就Java 而 言 ,Applet 与 Application 的 大小 和 复 杂 性 都 没 有 限 制 , 但 是 因 为Applet 主 要是 用 于 网 络 通 讯 , 由 于 通 讯 速 度 有 限 , 下 载 时 间较 长 , 因 而  
) F* K0 B# F  h' AApplet 一 般 来 说 规 模 较 小 , 而 对 于Application 则 无 此 顾 虑 。  1 Y6 ]$ O% h. }( [- [$ i  f+ e% [5 c, ?
' W) Y$ Z. {: Q7 U& T' ~
---- Applet 与 Application 之 间 的 技 术 差 别来 源 于 其 运 行 环 境 的 差 别 。 Applet 需 要 来 自 浏览 器 的 大 量 信 息: 浏 览 器 客 户 机 的 位 置 和 大 小 、嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过 程(init) 、 启 动过 程(start) 、停 止 过 程(stop) 、 终 止 过 程(destory) 、绘 图 过  程(paint) 等 等 , 而Application 则 相对 要 简 单 得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命令 行 参 数 。  & {5 l0 r" ~; G

' y" V5 |6 d) j  `# u. q$ f---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Application 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线 程 是 不 同 的 ,Applet 是 由 方 法 init  ) 来 对applet 进 行 初 始 化 的 , 而Application 则 由 方  法main( ) 来 开 始 运 行 程 序 的 。 一般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的原 则 进 行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写出 即 是Applet 又 是 Application 的 程 序 来 。 这 样 , 即 可以 使 我 们 更 进 一 步 了 解Java 的 内 部 结 构 又 可 以 使 同一 程 序 运 行 于 不 同 的 运 行 环 境 、 还 可 以 提 高 研究Java 的 兴 趣 。  - D3 w# @6 K/ q+ j9 z8 A' t

/ T# q( `% V: x2 B! W( ^---- 例 程 如 下:  : a# R0 k: q$ Y1 b+ h

- N9 c. T" t1 H. g      import java.applet.*;  . J( o6 J9 i- D. b& G( J9 d
      import java.awt.*;  
7 q) a. K/ L( g6 e+ H      import java.awt.event.*;  
4 a4 i# C  _$ {: }" f   
7 V" z  L& g3 v" I1 R" J/ O' x) o
      public class Example extends Applet implements  " k8 z9 Q. s1 M1 P$ h2 b
                       ActionListener{ //          public static void main(String[] args){  & ?1 ~% J& C( y) x8 O, B
           Frame win=new Frame("Example");  # V" |7 N" [0 \; R5 n% h  [+ A% Q
           Example example=new Example();  
' e; V- j) |2 B  \$ X           win.add("enter", example);  
: O$ I$ l1 ~4 t$ D  ]( d7 f8 m. k           example.init();             //            win.setSize(600,360);  $ D% ]. a1 m# A) e1 I
           win.setVisible(true);  2 \3 S9 q" i* B" y. o  @
         }  
0 q: z3 Q; r7 f  e/ i      public void init(){                        //            Button button;  ( g- Q4 g* r1 \4 n
           Label  label;  ' E$ x, T5 g4 n% \  `
           button=new Button(" OK "):  " ?9 v( o# a9 j6 z+ d/ s0 N
           button.setBounds(280,200,100,20);  / \) k, Q" H  L( @# m% X
           button.addActionListener(this);  0 ~, m4 m# q2 r% V) T5 R
           label=new Label();  ' `; f% p/ X: ?) F) O
           label.setBounds(260,100,200,20);  
( b3 X2 s( T. n: G# H7 A           add(button);  ) A, m" Q: {& Q2 v- r
           add(label);  * t/ @" k. c9 O# b5 ~, `5 v4 x- E
         }  
2 U. {8 ~# E: L+ C2 x- C. r# a/ m       public void actionPerformed(ActionEvent e){  & j9 H# H  p# ^2 L* f
           Object source=e.getSource();  
/ [' x6 \# W; ?/ T8 q           if(source==button){  
0 f9 p! p; P1 o* T             label.setText(" It is a example !");  * D% x7 l5 u- @9 h+ h
           }  ' _# M6 q7 p- |: b+ }
         }  
, t' Y, s* X$ z2 B( a2 [/ l      }  " }. A# F* }# M6 \

" B7 F# [. \$ @# J6 t---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类 这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的 一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是 init() 方 法 。  2 r1 m6 U5 t5 k# @! C

1 A% y$ ^  T7 z$ e7 Q! q---- 如 果 把 该 程 序 看 作Applet , 它 只 是覆 盖 了init()方 法 和actionPerformed( ) 方 法 来 响 应Button 事 件 。 如果 作 为Application , 则 由main( ) 方 法 开始 , 先 生 成 程 序 本 身 的 实 例 将 程 序 加 入 窗 口 ,然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以 在 提 示下 作  为Application 直 接 运 行 , 又 可 以 作为Applet 送 入 任 何 浏 览 器 。  
7 m* D5 L8 w. `* K: @  s9 v. J8 Z) x7 ^& O) `1 H( p
---- 2. Java 中 的 发 声 提 示  
+ \& u! u5 M0 C
2 b! x1 |) t/ k& C6 Y" z---- Java 作 为 一 种 网 络 编 程 语 言 , 在浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到提 示 的 作 用 , 需 要 加 入 声 音 。  
1 n9 T) S; I- h2 p
8 S2 n! Q& _' x4 t# _* A$ |+ T% S---- Java 的 包 java.applet 中 有AudioClip 接口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法。 用 法 如 下:  
) E. S' E& W/ Z: @$ V% ^6 j* n( t, t1 u; E7 K" `; E- R1 C' B
       AudioClip audio;  
# l5 K& e' m8 ~         audio=getAudioClip(getCodeBase(),"Hi.au");  
" v8 H9 N7 G. d         audio.play();  
, t8 c! U( W: o- ?) X8 L* V8 S8 t
1 v1 I! ?. L/ P4 r3 ^* m---- 第 一 行 生 成 接 口AudioClip 的 一 个 变量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 Hi.au , 此 文件 与 程 序 本 身 在 同 一 目 录 下,getCodeBase() 方 法 是用 来 取  得Applet 的class 文 件 的URL 地 址 。 第三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在 浏览 器 中 发 出 声音 。 那 么 , 在Application 中 是 否 也 可 以用 此 方 法 来发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利用 1 中 的 技 巧 来 编 写 一 个 即 是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能  在Applet 中 实 现 , 对 于Applicationplay() 方 法 是 不 能  * g6 V3 i. M- B& m- t
够 被 调 用 的 。  
0 Z, b. T0 v8 Z
$ o; z* D! n/ y! g% G) U( B---- 那 么 , 如 何 在Application 中 实 现 发声 提 示 呢 ?  
6 \: I1 O. M  q& O, d' c1 g% {/ o  R/ T! X& G, U' G
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发声 器(System Speaker ) 发 声 , 那 么 ,Java 中 也 应 有 类似 的 方 法 。  
  i% s) Z9 g6 ^+ _& i, d; P% o# a& ~7 ~5 }: ^0 |$ {
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 Toolkit 是 抽 象 类, 它 是 实  现AWT 的 所 有 工 具 的 父 类 。 Java 中的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultToolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一个 客 户 机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行对 话 。  
) |- e! m* d) V8 g
( E, Y. v7 [4 c/ O# R' A---- 程 序 如 下:  4 Q2 S6 a" q; {+ I+ Q' x3 _" }# G

! m, S) A$ ~7 h3 }8 V9 t 服 务 器:  
2 @2 v' v8 D# ]1 N: [import java.util.*;  
9 f8 ?7 {5 O! ]& U0 K  Aimport java.io.*;  
$ _! q; V( ^" e& l: i5 zimport java.net.*;  7 O( c- _2 I0 G2 y  P
import java.awt.*;  % q7 l& Z: P: x7 L
1 q( ?; E# x( h5 G8 T, q5 g- x, t" P
public class ServerT{  + E& P. m9 w% w, `+ j
  public static void main(String[] args){  
. F' p4 F8 z. r1 J) m! O" ]( m# j( g    Server server;  
- b. |% F& d7 a9 ^/ M    String clientRequest;  
5 l6 S5 Y9 u2 K1 ]    boolean quit=false;  & ^! }- Y! o0 C$ y* M
    server=new Server(8001);  9 a9 t1 a8 h; b1 u
    while(!quit){  
1 o& @2 `5 z& o4 {! f1 Y0 Y      DataInputStream keyboard=new DataInputStream(System.in);  
5 J, l* i& D" ]0 q& b      try{  , x! N7 B9 F" Z$ ?& O
        clientRequest=server.in.readLine();  
4 J: U* \6 C& g4 G5 ^- y        if(clientRequest.trim().equals("CLOSE")){  . q" \+ m" u+ W3 p; \( V5 Y- S: v0 l$ u
          System.out.println("Client says: "+clientRequest);  
3 n6 ]8 R7 [  i- m  u) {          System.exit(1);  . ~2 C2 r! I: o, C0 z7 c6 M. \
        }  
2 E! ~) q: N; K' \  X9 V# Y        System.out.println("Client says: "+clientRequest);  
2 S' i8 X$ X4 |" C) C" N        server.out.println(keyboard.readLine());  ' _% _; ?4 x. _0 L* |8 @
       }catch(IOException e){  
, O0 c. f& J0 @# z' |8 p: H3 W        System.out.println("IOException in server.in.readLine()"+e);  
$ o, y2 |/ a. F        System.exit(1);  2 P) Y( v* T! N. `" o8 ?6 W( v3 G* f
      }  
% {5 p4 m" g+ p  @    }  
3 j! ^3 @" M0 C! h8 }  }  
# M/ _0 h! y" m5 ]  p, |" X" D}  
$ p  [6 ?5 J2 i9 D+ ^: K4 m  Dclass Server{  
* ^: E9 v( Z# z& T# B4 m3 _+ k  private ServerSocket server;  
0 R9 ]" W5 @' b3 C  private Socket socket;  ( A3 ^  f, F  t/ V. }/ P! S) H
  public DataInputStream in;  / Z$ ~# U' E1 f0 H. M) w) [$ X
  public PrintStream out;  
! n* p0 E# g1 {- g: G  public Server(int port){  0 c  ?6 P2 D9 p2 f2 e- a8 ~# X
    try{  
' d6 L: q- |1 b. q9 ~# I& a( }* W      server=new ServerSocket(port);  - @( u7 i3 ^% N8 W* X/ l2 T! n% K
      System.out.println("\n  
& ~+ X( _$ M$ U4 ~- X& r*************************************************");  & ^& F% y3 L( W5 }9 n) [
      System.out.println("\n @(              Version 1.00 97/12/30 ");  - l4 z  D/ \: P: R
      System.out.println(" Copyright (c) 1997  ' ~3 D0 M5 d) z, ]/ T! _6 y
              (Lui DongBing) All Rights Reserved.");  6 i1 y& ?/ q4 X2 }" w7 B! N
      System.out.println("\n  
* A2 l2 B: i9 D# p, a9 p& ]***************************************************");  
% T2 r# d# `# k5 P      System.out.println("\n Server is: \n "+server);  
% {" S+ S1 P9 g+ Z      socket=server.accept();  
: L. L1 r) S7 S# Q  b      for(int i=0;I < 260;i++){    // 发 声 提 示  
) n% ]! i: D  K# E9 y" `5 d        Toolkit.getDefaultToolkit().beep();  % ~  E% @  g) q8 g  F
      }  
' Z, I& k, s. c- \( {: {+ k: V3 }      System.out.println("\n Server is ready ! \n");    L. M9 P; P! ~1 n
      in=new DataInputStream(socket.getInputStream());  1 N, k8 I( t) m  j6 R+ I& c
      out=new PrintStream(socket.getOutputStream());  
8 U# f  f' ]* e1 \! ^      out.println("We connect in "+new Date());  
9 w% ~  @/ G  `; h* P6 s) k    }catch(IOException e){  
5 I: K# T; y! X; o, j      System.out.println("Server is failied !");  
% E  L, d7 Y2 S9 d# p1 n6 u( P    }  . L3 p& c: k4 S0 z
  }  
( y; s; F1 U; A}  ( x$ R* p# q- \# z) x( _% C, H
     R# P3 r3 q7 u5 f0 G, ]9 F0 k: s

# C6 u5 c$ C( Y4 \: u6 V* W$ P  Y( M! a 客 户 机 :  ( x; ~2 l# T" J1 g+ r7 A
import java.util.*;  2 u2 a' m! Q- V; K8 g; r! K/ b
import java.io.*;  % G; m# A6 x- ?4 C- s* K2 ]0 X
import java.net.*;  
3 P) U  V6 K9 U0 q: {) \6 U4 u- u
public class ClientT{  5 p% I, M. i% s4 u" ?+ K( c
  public static void main(String[] args){  1 t' R5 g3 j3 S( t* K3 M" r
    String welcome,response;  / l, Q8 O& q* P9 p  q
    Client client;  ) G) }" t+ q0 `& l
    client=new Client("202.120.80.20",8001);       //      DataInputStream keyboard=new DataInputStream(System.in);  
, q# |! X5 P8 G, T    boolean Bye=false;  : X; t1 a. [1 k
    while(!Bye){  0 L# h8 M2 ]( L( W( ?
    try{  ' C3 Q$ z6 w) a
      welcome=client.in.readLine();  ' `% Y  |! n9 j: m4 z2 o
      System.out.println(" Server says: "+welcome);  ; M$ [+ I8 o- t7 E' I( c  U+ z+ L
      client.out.println(keyboard.readLine());  
; J: \  f: w$ @) x) c" t$ z: l     }catch(IOException e){  5 ]1 P0 R5 Z, \- ~+ p
      System.out.println("\n The talk is CLOSED !");  ! Z* P* Z0 }6 v% c: I/ J, x7 k
      System.exit(1);  9 t2 f8 ]: P1 T8 ]2 q2 X' c! |
    }  
  q# S' h. K$ C' o- w; `' N    }  
9 g' J4 `" ]1 Z  ?    try{  
! D0 ^9 h# ^; X- o; N1 v      Thread.sleep(200);  , S! L2 G; Z  [! E6 Q/ I. H
    }catch(Exception e){  " k# K; _; N5 x) X# E# ]! u
      System.out.println("It is a bug !");  8 s0 s* x9 r* J2 s
    }  
& C% t! f1 ^+ r* n& _* C  }  $ ]8 E* T$ C) u/ w; u
}  
3 p8 F, q; u/ V9 Cclass Client{  
5 T& I/ ~" G; ?( T. E) K7 L! I  public DataInputStream in;  
. W4 `: W3 {1 j4 V5 I0 l% B  public PrintStream out;  
* A- X$ w0 q7 D5 M1 @; D  private Socket client;  
7 `" u. v9 G+ `0 H7 ~& w  public Client(String host,int port){  ! g0 J1 J5 I6 ~
    try{  
2 Q+ q% @) K0 v0 ~8 W0 a      client=new Socket(host,port);  
  v5 k* G! W; d/ ^      System.out.println("\n  2 X$ I% L% Q0 z0 @. \
***************************************************");  0 J9 U7 J) C# _: O" [& F
      System.out.println("\n @(               Version 1.00 97/12/30 ");  
9 y% k" X5 H& ~$ l( O      System.out.println(" Copyright (c) 1997  . S' S0 B; j+ O- q% q, Z
          (Lui DongBing) All Rights Reserved.");  
7 e8 J3 ~& v/ J( U/ D      System.out.println("\n  
1 ?5 R1 a% B* y. v" ~**************************************************");  
4 w2 k8 ?9 e/ d/ [$ n2 Z      System.out.println("\n Client socket:"+client);  
6 P1 o, _( p0 n7 K# Z4 L4 C      System.out.println("\n Client is ready ! \n");  ! `  |5 z" G$ E+ ^, h
      out=new PrintStream(client.getOutputStream());  1 o+ B$ b+ t8 @* @
      in=new DataInputStream(client.getInputStream());  . S9 }0 K" c, w/ v7 l8 s, g! N
     }catch(IOException e){  
1 b; p0 P$ G1 O# K) {' f! D9 z; s      System.out.println("\n IOException !\n"+e);  
% R4 Y: I+ S% {& g9 O6 F: e      System.exit(1);  - F. q/ k+ [" o/ z! {+ h% U' E
    }  
  f$ f+ H. [; B3 U$ {* D* O  }  
  H$ x) V7 h8 G6 `) l" s) }. W- ^}
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 00:15 , Processed in 0.319991 second(s), 70 queries .

    回顶部