FileDocCategorySizeDatePackage
SoundApplication.javaAPI DocExample5009Tue May 30 21:25:22 BST 2000None

SoundApplication

public class SoundApplication extends JPanel implements ActionListener, ItemListener

Fields Summary
SoundList
soundList
String
auFile
String
aiffFile
String
midiFile
String
rmfFile
String
wavFile
String
chosenFile
AudioClip
onceClip
AudioClip
loopClip
URL
codeBase
JComboBox
formats
JButton
playButton
JButton
loopButton
JButton
stopButton
JLabel
status
boolean
looping
Constructors Summary
public SoundApplication()


      
        String [] fileTypes = {auFile,
                               aiffFile,
                               midiFile,        
                               rmfFile,
                               wavFile};
        formats = new JComboBox(fileTypes);
        formats.setSelectedIndex(0);
        chosenFile = (String)formats.getSelectedItem();
        formats.addItemListener(this);

        playButton = new JButton("Play");
        playButton.addActionListener(this);

        loopButton = new JButton("Loop");
        loopButton.addActionListener(this);

        stopButton = new JButton("Stop");
        stopButton.addActionListener(this);
        stopButton.setEnabled(false);
        
        status = new JLabel(
                    "Click Play or Loop to play the selected sound file.");
                
        JPanel controlPanel = new JPanel();
        controlPanel.add(formats);
        controlPanel.add(playButton);
        controlPanel.add(loopButton);
        controlPanel.add(stopButton);           
                
        JPanel statusPanel = new JPanel();
        statusPanel.add(status);
                
        add(controlPanel);
        add(statusPanel);

        startLoadingSounds();
    
Methods Summary
public voidactionPerformed(java.awt.event.ActionEvent event)

        //PLAY BUTTON
        Object source = event.getSource();
        if (source == playButton) {
            //Try to get the AudioClip.
            onceClip = soundList.getClip(chosenFile);
            stopButton.setEnabled(true);
            onceClip.play();     //Play it once.
            status.setText("Playing sound " + chosenFile + ".");
            if (onceClip == null) {
                status.setText("Sound " + chosenFile + " not loaded yet.");
            }
            return;
        }

        //START LOOP BUTTON
        if (source == loopButton) {
            loopClip = soundList.getClip(chosenFile);

            looping = true;
            loopClip.loop();     //Start the sound loop.
            loopButton.setEnabled(false); //Disable start button.
            stopButton.setEnabled(true);
            status.setText("Playing sound " + chosenFile + " continuously.");
            if (loopClip == null) {
                status.setText("Sound " + chosenFile + " not loaded yet.");
            }
            return;
        }

        //STOP LOOP BUTTON
        if (source == stopButton) {
            if (looping) {
                looping = false;
                loopClip.stop();    //Stop the sound loop.
                loopButton.setEnabled(true); //Enable start button.
            } else if (onceClip != null) {
                onceClip.stop();
            }
            stopButton.setEnabled(false);
            status.setText("Stopped playing " + chosenFile + ".");
            return;
        }
    
public voiditemStateChanged(java.awt.event.ItemEvent e)

        chosenFile = (String)formats.getSelectedItem();
        soundList.startLoading(chosenFile);
    
public static voidmain(java.lang.String[] s)

        WindowListener l = new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        };
        JFrame f = new JFrame("SoundApplication");
        f.addWindowListener(l);
        f.getContentPane().add(new SoundApplication());
        f.setSize(new Dimension(400,100));
        f.show();
    
public voidstart()

        if (looping) {
            loopClip.loop();    //Restart the sound loop.
        }
    
voidstartLoadingSounds()

        //Start asynchronous sound loading.
        try {
            codeBase = new URL("file:" + System.getProperty("user.dir") + "/");
        } catch (MalformedURLException e) {
            System.err.println(e.getMessage());
        }
        soundList = new SoundList(codeBase);
        soundList.startLoading(auFile);
        soundList.startLoading(aiffFile);
        soundList.startLoading(midiFile);
        soundList.startLoading(rmfFile);
        soundList.startLoading(wavFile);
    
public voidstop()

        onceClip.stop();        //Cut short the one-time sound.
        if (looping) {
            loopClip.stop();    //Stop the sound loop.
        }