Java考核
课程名称Java技术及其应用
题目名称图形界面音频播放器
学生学院计算机学院
专业班级计算机科学与技术2班学号 3211005765 学生姓名李振
指导教师李卫华
2013 年11 月27 日
1.题目:
编写一个图形界面多媒体应用程序,实现播放音频文件的功能。
2.运行环境:
Eclipse
3.实现功能:
可在列表中选择自己想听的歌曲,双击歌曲名即开始播放,中途可按stopPlay 键停止播放,按playOnce键重新播放,按playLoop键循环播放当前歌曲。能在Applet 窗口底部的状态位置显示Applet当前状态。
4.源代码:
package hjh;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import https://www.sodocs.net/doc/0f4950145.html,bel;
import java.awt.List;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MySound extends Applet implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
AudioClip current = null;
Image image1, image2;
Button playOnce, stopPlay, playLoop;
Panel panel, panel2;
Label label;
List list1, list2;
String str;
public void init()
{
setBackground(Color.PINK);
setSize(400, 400);
setLayout(null);
panel = new Panel();
panel2 = new Panel();
panel.setLayout(new GridLayout(1, 4));
panel.setSize(400, 30);
panel.setBackground(Color.RED);
panel2.setLayout(new GridLayout(1, 2));
panel2.setBounds(0, 270, 400, 140);
add(panel);
add(panel2);
list1 = new List();
list2 = new List();
list1.addActionListener(this);
list2.addActionListener(this);
list1.setBackground(Color.PINK);
list2.setBackground(Color.PINK);
list1.add(" 林俊杰- 裂缝中的阳光");
list1.add(" 林俊杰- 修炼爱情");
list1.add(" 林俊杰- 因你而在");
list1.add(" 林俊杰- 零度的亲吻");
list2.add(" 孙燕姿- 天黑黑");
list2.add(" 孙燕姿- 开始懂了");
list2.add(" 孙燕姿- 心愿");
list2.add(" 孙燕姿- 遇见");
panel2.add(list1);
panel2.add(list2);
label = new Label("PlayMethod:");
panel.add(label);
playOnce = new Button("playOnce");
stopPlay = new Button("stopPlay");
playLoop = new Button("playLoop");
panel.add(playOnce);
panel.add(stopPlay);
panel.add(playLoop);
image1 = getImage(getCodeBase(),"林俊杰.jpg");
image2 = getImage(getCodeBase(),"孙燕姿.jpg");
repaint();
}
@Override
public void paint(Graphics g)
{
// TODO Auto-generated method stub
g.drawImage(image1, 30,50,150,170,this);
g.drawImage(image2, 220,50,150,170,this);
g.drawString("林俊杰- 单曲", 65 , 250);
g.drawString("孙燕姿- 单曲", 265, 250);
}
@Override
public boolean action(Event evt, Object what)
{
// TODO Auto-generated method stub
if(evt.target == playOnce)
{
if(current != null)
{
current.play();
showStatus("Playing Sound " + str + ".");
}
else
showStatus("Playing Sound " + current + " not loaded yet.");
return true;
}
else if(evt.target == stopPlay)
{
if(current != null)
{
current.stop();
showStatus("Stop playing Sound " + str + ".");
}
else
showStatus("Playing Sound " + current + " not palyed now.");
return true;
}
else if(evt.target == playLoop)
{
if(current != null)
{
current.loop();
showStatus("Loop playing Sound " + str + ".");
}
else
showStatus("Playing Sound " + current + " not palyed now.");
return true;
}
return false;
}
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
if(current != null)
{
current.stop();
showStatus("Stop playing Sound " + str + ".");
current = null;
}
str = e.getActionCommand();
current = getAudioClip(getCodeBase(), str + ".wav");
current.play();
showStatus("Playing Sound " + str + ".");
}
}
5.Applet截图:
6.实验感想:
通过这次实验,我学会了创建Applet,如何往Applet中添加各种组件或音频、照片,对布局管理器和Applet中一些方法的使用有了一定的认识,加深了对awt的各种组件的使用方法和事件处理的了解,并且初步接触到观察者模型,对其有了基本的了解。