JAVA音频播放器问题

代码如下,请高手帮忙解决importjava.applet.*;importjava.awt.*;importjava.awt.event.*;importjava.io... 代码如下,请高手帮忙解决
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.URL;
import javax.swing.*;
class MyJFrame extends JFrame implements ActionListener
{
JButton bt1,bt2,bt3,bt4;
JPanel p1;
AudioClip ac;
MyJFrame()
{
this.setTitle("音乐播放器"); //标题
this.setSize(300,400);
p1=new JPanel();
p1.setLayout(new FlowLayout());
bt1=new JButton("打开");
bt1.addActionListener(this);
bt2=new JButton("播放");
bt2.addActionListener(this);
bt3=new JButton("循环");
bt3.addActionListener(this);
bt4=new JButton("停止"); //增加四按钮
bt4.addActionListener(this);
p1.add(bt1);
p1.add(bt2);
p1.add(bt3);
p1.add(bt4);
this.add(p1);
this.setVisible(true);
this.addWindowListener(new WL()); //窗口监听
}
public void actionPerformed(ActionEvent e)
{
File fl,f2; //两个文件对象
String fpath,fname; //分别得到文件所在文件夹和文件名
URL url=null;
Applet ap=new Applet(); //定义Applet对象,调用其getAudioClip函数得到音频
if(e.getActionCommand()=="打开") //运用文件选择器
{
JFileChooser jfc = new JFileChooser();
if(jfc.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
fl=jfc.getSelectedFile(); //得到所选的文件
f2=fl.getParentFile(); //得到上级目录文件
fpath=f2.getAbsolutePath(); //得到上级目录地址
fname=fl.getName(); //得到文件名
try{
url=new URL("file://"+fpath); //把上级目录地址转化成URL对象
ac=ap.getAudioClip(url, fname); //通过Applet对象得到音频
}catch(IOException ex){}

}
}
if(e.getActionCommand()=="播放")
{
ac.play();
}
if(e.getActionCommand()=="循环")
{
ac.loop();
}
if(e.getActionCommand()=="停止")
{
ac.stop();
}
}
class WL extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
}

}
public class Music {

public static void main(String[] args) {
new MyJFrame();

}

}

就是打开的时候有错误,也播放不了
就是AudioClip 对象ac没有得到音频,请问如何解决呢?谢谢了!
展开
 我来答
niu258375967
推荐于2016-03-25 · TA获得超过248个赞
知道小有建树答主
回答量:181
采纳率:100%
帮助的人:0
展开全部
给你个例子看看,要下javax.media包

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.media.*;

// 视频播放程序

public class VideoPlayDemo extends JFrame {

private Player player; // 播放器对象
private Component visualMedia; // 视频显示组件
private Component mediaControl; // 视频播放控制组件
private Container container; // 主容器
private File mediaFile; //媒体文件
private URL fileURL; //媒体文件URL地址

public VideoPlayDemo() { // 构造函数
super("视频播放程序"); //调用父类构造函数

container = getContentPane(); //得到窗口容器
JToolBar toobar = new JToolBar(); //实例化工具栏
JButton openFile = new JButton("打开媒体文件"); //实例化按钮
toobar.add(openFile); //增加按钮到工具栏
JButton openURL = new JButton("打开网络地址");
toobar.add(openURL);
container.add(toobar, BorderLayout.NORTH); //设置工具栏

openFile.addActionListener(new ActionListener() { //打开文件按钮事件处理
public void actionPerformed(ActionEvent event) {
JFileChooser fileChooser = new JFileChooser(); //实例化文件选择器
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//设置文件打开模式为仅打开文件
int result = fileChooser.showOpenDialog(VideoPlayDemo.this);//显示对话框
if (result == JFileChooser.APPROVE_OPTION) { //得到用户行为
mediaFile = fileChooser.getSelectedFile(); //得到选择的文件
}
if (mediaFile != null) {
try {
fileURL = mediaFile.toURL(); //得到文件的URL地址
} catch (MalformedURLException ex) {
ex.printStackTrace(); //输出错误信息
showMessage("打开错误"); //显示错误信息
}
startPlayer(fileURL.toString()); //开始播放打开的文件
}
}
});

openURL.addActionListener(new ActionListener() { //打开URL按钮事件处理
public void actionPerformed(ActionEvent event) {
String addressName =JOptionPane.showInputDialog(VideoPlayDemo.this, "输入URL地址");
if (addressName != null)
startPlayer(addressName); //开始播放打开的URL
}
});

Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);

setSize(300, 200); //设置窗口大小
setVisible(true); //设置窗口为可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}

//初始化播放器
public void startPlayer(String mediaLocation) {
if (player != null)
//如果播放器非空则移去先前的播放器组件
if (visualMedia != null)
container.remove(visualMedia); //如果对象visualMedia非空则移去
if (mediaControl != null) {
container.remove(mediaControl); //如果对象mediaControl非空则移去
player.close(); //关闭播放器
}
MediaLocator mediaLocator = new MediaLocator(mediaLocation); //媒体定位器
if (mediaLocator == null) {
showMessage("打开文件错误"); //显示错误信息
return;
}
try {
player = Manager.createPlayer(mediaLocator); //得到播放器实例
player.addControllerListener(new PlayerEventHandler()); //增加播放控制器
player.realize();
} catch (Exception ex) {
ex.printStackTrace();
showMessage("打开错误"); //显示错误信息
}

}

//取得媒体组件
public void getMediaComponents() {
visualMedia = player.getVisualComponent(); //取得视频显示组件

//如果对象visualMedia非空则加入到窗口内容窗格
if (visualMedia != null) {
container.add(visualMedia, BorderLayout.CENTER);
pack();
}

mediaControl = player.getControlPanelComponent(); //取得播放控制组件

//如果对象visualMedia非空则加入到窗口内容窗格
if (mediaControl != null)
container.add(mediaControl, BorderLayout.SOUTH);

}

//播放器事件处理
private class PlayerEventHandler extends ControllerAdapter {

public void realizeComplete(RealizeCompleteEvent realizeDoneEvent) {
player.prefetch(); //预取媒体数据
}

//完成预取媒体数据后,开始播放媒体
public void prefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {
getMediaComponents();
validate();
player.start(); //开始播放媒体
}

//如果媒体播放完毕,重新设置媒体时间并停止媒体播放器
public void endOfMedia(EndOfMediaEvent mediaEndEvent) {
player.setMediaTime(new Time(0)); //重新设置媒体时间
player.stop(); // 停止媒体播放
}
}

public void showMessage(String s) {
JOptionPane.showMessageDialog(this, s); //显示提示信息
}

public static void main(String args[]) {
new VideoPlayDemo();
}

}
s_s2_h
2010-07-23
知道答主
回答量:29
采纳率:0%
帮助的人:20.6万
展开全部
url=new URL("file://"+fpath); //把上级目录地址转化成URL对象
修改成:
url=new URL(fpath+"/"); //把上级目录地址转化成URL对象
试试!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tespo
2010-08-03 · TA获得超过250个赞
知道答主
回答量:236
采纳率:0%
帮助的人:219万
展开全部
1.url=new URL("file://"+fpath);
改为url=new URL(fpath);
2.其实不需要创建Applet类的实例
ac=Applet.newAudioClip(url, fname);//通过Applet对象得到音频
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱上奥斯卡520
2010-07-23
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
啥是啥 看的眼花缭乱
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式