Java tutorial
/* * Copyright (c) 1996, 1998 Bill Venners. All Rights Reserved. * * Source code file for the Whistle applet, part of the article * "Impressions of SD '98" by Bill Venners, published * in JavaWorld March, 1998 * * This source file may not be copied, modified, or redistributed * EXCEPT as allowed by the following statements: You may freely use * this file for your own work, including modifications and * distribution in compiled (class files, native executable, etc.) * form only. You may not copy and distribute this file. You may not * remove this copyright notice. You may not distribute modified * versions of this source file. You may not use this file in printed * media without the express permission of Bill Venners. * * BILL VENNERS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE * SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSE, OR NON-INFRINGEMENT. BILL VENNERS * SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY A LICENSEE AS A * RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. */ import java.awt.BorderLayout; import java.awt.Button; import java.awt.Label; import java.applet.AudioClip; import java.awt.Event; import java.net.URL; import java.net.URLConnection; import java.net.MalformedURLException; /** * This applet is a simple button that plays an audio clip when * pushed. * * @author Bill Venners */ public class Whistle extends java.applet.Applet implements Runnable { URL theURL; private AudioClip yeehaa; private Thread runner; private boolean startClip = false; private boolean urlExceptionWasThrown = false; public void start() { if (runner == null) { runner = new Thread(this); runner.start(); } } public void stop() { if (runner != null) { if (yeehaa != null) { yeehaa.stop(); } runner.stop(); runner = null; } } public void init() { super.init(); String url = getParameter("clipURL"); try { theURL = new URL(getDocumentBase(), url); } catch (MalformedURLException e) { urlExceptionWasThrown = true; } if (!urlExceptionWasThrown) { yeehaa = getAudioClip(theURL); setLayout(new BorderLayout()); add("Center", new Button("Whistle")); } else { setLayout(new BorderLayout()); add("Center", new Label("Sorry, No Audio")); } } public void run() { while (runner != null) { if (startClip && yeehaa != null) { startClip = false; yeehaa.play(); } try { Thread.sleep(500); } catch (InterruptedException e) { } } } public boolean action(Event evt, Object arg) { if (evt.target instanceof Button) { String bname = (String) arg; if (bname.equals("Whistle")) { startClip = true; } } return true; } }