Java作為一種網路程式設計語言,在瀏覽器中即可以進行動畫示範,也可以播放聲音。在人機 的互動過程中,為了加強效果或起到提示的作用,需要加入聲音。
Java的包java.applet中有AudioClip介面,此介面封裝有關聲音片斷的一些常用方法。用 法如下:
AudioClip audio;
audio=getAudioClip(getCodeBase(),"Hi.au");
audio.play();
第一行產生介面AudioClip的一個變數,第二行利用此變數取得音效檔Hi.au,此檔案與 程式本身在同一目錄下,getCodeBase()方法是用來取得Applet的class檔案的URL地址。第三 行是播放音效檔。在Applet中利用此用法可在瀏覽器中發出聲音。那麼,在Application中 是否也可以用此方法來發出聲音呢?不可以。因為介面AudioClip是在包java.applet中,而 此包只適用於Applet。是否可以用其它方法來實現呢?我們可以利用1中的技巧來編寫一個即 是Applet又是Application的程式試試。結果,還是不行。這是因為play()方法只能在Applet 中實現,對於Applicationplay()方法是不能夠被調用的。
那麼,如何在Application中實現發聲提示呢?
記得VB中有beep語句來使系統發聲器(SystemSpeaker)發聲,那麼,Java中也應有類似的 方法。
在Java的java.awt.Toolkit類中有方法beep()是來實現這一功能的。類Toolkit是抽象類別 ,它是實現AWT的所有工具的父類。Java中的抽象類別是不能夠執行個體化的,但是一般地,抽象類別 可以產生變數,然後利用抽象類別中的某一方法來取得此類的替代品。在Toolkit中是利用 getDefaultToolkit()方法來實現的。現在給出一個執行個體:
這是一個客戶機/伺服器的Application。當伺服器運行時如果有客戶機與伺服器相連,則 伺服器會自動發聲警報提示伺服器端的使用者有客戶要與自己進行對話。
----程式如下:
伺服器:
import java.util.*;import java.io.*;import java.net.*;import java.awt.*;public class ServerT{ public static void main(String[] args){ Server server; String clientRequest; boolean quit=false; server=new Server(8001); while(!quit){ DataInputStream keyboard=new DataInputStream(System.in); try{ clientRequest=server.in.readLine(); if(clientRequest.trim().equals("CLOSE")){ System.out.println("Client says: "+clientRequest); System.exit(1); } System.out.println("Client says: "+clientRequest); server.out.println(keyboard.readLine()); }catch(IOException e){ System.out.println("IOException in server.in.readLine()"+e); System.exit(1); } } }}class Server{ private ServerSocket server; private Socket socket; public DataInputStream in; public PrintStream out; public Server(int port){ try{ server=new ServerSocket(port); System.out.println("\n*********************************************************"); System.out.println("\n @(#)Net Applecation Version 1.00 97/12/30 "); System.out.println(" Copyright (c) 1997 (Lui DongBing) All Rights Reserved."); System.out.println("\n*********************************************************"); System.out.println("\n Server is: \n "+server); socket=server.accept(); for(int i=0;i< 260;i++){ // 發 聲 提 示 Toolkit.getDefaultToolkit().beep(); } System.out.println("\n Server is ready ! \n"); in=new DataInputStream(socket.getInputStream()); out=new PrintStream(socket.getOutputStream()); out.println("We connect in "+new Date()); }catch(IOException e){ System.out.println("Server is failied !"); } }}