The Java Program: AudioApplet.java

  1 import java.applet.Applet;
  2 import java.applet.AudioClip;
  3 
  4 import java.awt.Frame;
  5 import java.awt.List;
  6 import java.awt.event.WindowEvent;
  7 import java.awt.event.WindowAdapter;
  8 import java.awt.event.ItemEvent;
  9 import java.awt.event.ItemListener;
 10 
 11 import java.io.File;
 12 import java.io.IOException;
 13 import java.io.EOFException;
 14 
 15 /*
 16   <applet code=AudioApplet width=200 height=400>
 17   </applet>
 18 */
 19 
 20 public class AudioApplet extends Applet {
 21 
 22    public void init () {
 23       final List list = new List (0, false);
 24       String [] audio_files = files (".", ".au");
 25       for (int i=0; i<audio_files.length; i++) {
 26          list.addItem (audio_files[i]);
 27       }
 28       class Listener implements ItemListener {
 29          public void itemStateChanged (ItemEvent event) {
 30             // ItemSelectable l = event.getItemSelectable();
 31             System.out.println ("play " + list.getSelectedItem());
 32             AudioClip clip = getAudioClip (getCodeBase(), list.getSelectedItem());
 33             clip.play();
 34          }
 35       }
 36       list.addItemListener (new Listener ());
 37       add (list);
 38       setVisible (true);
 39    }
 40    
 41    private static String [] files (String dir, String suffix)  {
 42       final File fd = new File(dir);
 43       final String [] allf = fd.list();
 44       int n=0, j=0;
 45 
 46       // count the files
 47       for(int i=0; i<allf.length; i++) {
 48          final File fd1 = new File (fd.getPath(), allf[i]);
 49          final String name = fd1.getName();
 50          if (fd1.isFile() && name.endsWith(suffix)) {
 51             n++;
 52          }
 53       }
 54 
 55       String [] files = new String [n];
 56       for(int i=0; i<allf.length; i++) {
 57          final File fd1 = new File (fd.getPath(), allf[i]);
 58          final String name = fd1.getName();
 59          if (fd1.isFile() && name.endsWith(suffix)) {
 60             files[j++] = name;
 61          }
 62       }
 63       return files;
 64    }
 65 }