1 //App15_4.java 在小程序里播放音乐
2 import java.awt.*;
3 import java.awt.event.*;
4 import java.applet.Applet;
5 import java.applet.AudioClip;
6 public class App15_4 extends Applet implements ItemListener
7 {
8 AudioClip[] midi=new AudioClip[3]; //定义 AudioClip 接口类型的数组
9 AudioClip song; //目前选取的音乐
10 Choice coi=new Choice(); //创建下拉列表对象
11 Button bnt_loop=new Button("循环");
12 Button bnt_stop=new Button("停止");
13 public void init()
14 {
15 String num;
16 for(int i=0;i<midi.length;i++)
17 {
18 num=String.valueOf(i+1);
19 midi[i]=getAudioClip(getCodeBase(),num+".mid");//取得音乐来源
20 }
21 coi.add("爱你多年"); coi.add("夜来香"); coi.add("爱人");
22 add(coi);
23 add(bnt_loop); add(bnt_stop);
24 coi.addItemListener(this); //将小程序本身设置为 coi 的监听者
25 bnt_loop.addActionListener(new MyActLit()); //设置监听者
26 bnt_stop.addActionListener(new MyActLit());
27 song=midi[0]; //设置启动小程序时播放的音乐
28 song.play(); //播放音乐
29 }
30 public void itemStateChanged(ItemEvent e)
31 {
32 song.stop(); //停止正在播放的音乐
33 int i=coi.getSelectedIndex(); //在下拉列表中选择播放音乐的序号
34 song=midi[i]; //设置待播放的音乐
35 song.play(); //播放音乐
36 }
37 class MyActLit implements ActionListener //定义内部类
38 {
39 public void actionPerformed(ActionEvent e) //处理按钮事件的程序代码
40 {
41 Button bnt=(Button) e.getSource(); //取得被选中的按钮
42 if (bnt==bnt_loop) song.loop(); //若选择“循环”按钮,则循环播放
43 else song.stop(); //若选择“停止”按钮,则停止播放
44 }