编写程序,在Applet中使用下拉框显示音乐文件的名字,在程序中使用AudioChip类控制播放的音乐文件,使用“播放”、“连续”、“停止”控制按钮选择播放音乐的状态。

本文介绍了一个使用Java Applet实现的声音播放器程序。该程序能够加载并播放不同格式的声音文件,包括AU、AIFF、MIDI、RMF和WAV格式。用户可以通过界面上的按钮选择文件类型、播放、循环播放或停止播放声音。

import javax.swing.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class SoundApplet extends JApplet implements ActionListener,ItemListener
{
 AppletSoundList soundList;
 String auFile = "sound//spacemusic.au";
 String aiffFile = "sound//fiute+hrn+mrmba.aif";
 String midiFile = "sound//trippygaial.mid";
 String rmfFile = "sound//jungle.rmf";
 String wavFile = "sound//bottle-open.wav";
    String chosenFile;
    AudioClip onceClip, loopClip;
    JComboBox formats;
    JButton playButton, loopButton, stopButton;
    boolean looping = false;
    public void init()
    {
     String [] fileTypes = {auFile,aiffFile,midiFile,rmfFile,wavFile};
     formats = new JComboBox(fileTypes);
     formats.setSelectedIndex(0);
     chosenFile = (String)formats.getSelectedItem();
     formats.addItemListener(this);
     playButton=new JButton("播放");
     playButton.addActionListener(this);
     loopButton=new JButton("连续");
     loopButton.addActionListener(this);
     stopButton=new JButton("停止");
     stopButton.addActionListener(this);
     stopButton.setEnabled(false);
     
     JPanel controlPanel=new JPanel();
     controlPanel.add(formats);
     controlPanel.add(playButton);
     controlPanel.add(loopButton);
     controlPanel.add(stopButton);
     getContentPane().add(controlPanel);
     startLoadingSounds();
    }
   
    public void itemStateChanged(ItemEvent e)
    {
     chosenFile=(String)formats.getSelectedItem();
     soundList.startLoading(chosenFile); 
    }
    void startLoadingSounds()
    {
     soundList=new AppletSoundList(this, getCodeBase());
     soundList.startLoading(auFile);
     soundList.startLoading(aiffFile);
     soundList.startLoading(midiFile);
     soundList.startLoading(rmfFile);
     soundList.startLoading(wavFile);
    }
    public void stop()
    {
     onceClip.stop();
     if(looping)
     {
      loopClip.stop();
     }
    }
    public void start()
    {
     if(looping)
     {
      loopClip.loop();
     }
    }
    public void actionPerformed(ActionEvent event)
    {
     Object source=event.getSource();
     if(source==playButton)
     {
      onceClip=soundList.getClip(chosenFile);
      onceClip.play();
      stopButton.setEnabled(true);
      showStatus("Playing sound" +chosenFile+".");
      if(onceClip==null)
      {
       showStatus("Sound"+chosenFile+"not loaded yet.");
      }
         return;
        }
        if(source==loopButton)
        {
        loopClip=soundList.getClip(chosenFile);
        looping=true;
        loopClip.loop();
        loopButton.setEnabled(false);
        stopButton.setEnabled(true);
        showStatus("Playing sound"+chosenFile+"continuously.");
        if(loopClip==null)
        {
      showStatus("sound"+chosenFile+"not loaded yet.");
        }
        return;
         }
         if(source==stopButton)
         {
      if(looping)
      {
      looping=false;
      loopClip.stop();
      loopButton.setEnabled(true);
      }
      else if(onceClip!=null)
      {
      onceClip.stop();
      }
      stopButton.setEnabled(false);
      showStatus("Stopped playing"+chosenFile+".");
      return;
         }
    }
}


import javax.swing.*;
import java.applet.*;
import java.net.URL;
class AppletSoundLoader extends Thread
{
 JApplet applet;
 AppletSoundList soundList;
 URL baseURL;
 String relativeURL;
 public AppletSoundLoader(JApplet applet,AppletSoundList soundList,URL baseURL,String relativeURL)
 {
  this.applet=applet;
  this.soundList=soundList;
  this.baseURL=baseURL;
  this.relativeURL=relativeURL;
  setPriority(MIN_PRIORITY);
  start();
 }
 public void run()
 {
  AudioClip audioClip=applet.getAudioClip(baseURL,relativeURL);
  soundList.putClip(audioClip,relativeURL);
 }
}

 

import javax.swing.*;
import java.applet.*;
import java.net.URL;
class AppletSoundList extends java.util.Hashtable
{
 JApplet applet;
 URL baseURL;
 public AppletSoundList(JApplet applet,URL baseURL)
 {
  this.applet=applet;
  this.baseURL=baseURL;
 }
 public void startLoading(String relativeURl)
 {
  new AppletSoundLoader(applet,this,baseURL,relativeURl);
 }
 public AudioClip getClip(String relativeURL)
 {
  return(AudioClip)get(relativeURL);
 }
 public void putClip(AudioClip clip,String relativeURL)
 {
  put(relativeURL,clip);
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值