问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 怎样播放音乐

发布网友 发布时间:2022-04-25 04:52

我来回答

3个回答

热心网友 时间:2023-10-27 08:19

你下去下载一个Media包

import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.GainControl;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JFrame;
class MediaPlayer extends JFrame implements ActionListener, ControllerListener, ItemListener
{
//MediaPlayer类的变量成员的声明;
//JMF提供的播放器对象;
static Player player;
Component vc, cc, gcc;
GainControl gc;
//first值用来控制在刚开始程序时显示一幅欢迎界面;loop用以标记是否循环播放;
boolean first = true, loop = false;
//设立一个字符串记录当前打开文件的路径
String currentDirectory;

MediaPlayer(String title)
{
super(title);

// 利用一个adapter实现对用户点击窗口系统菜单的关闭按钮
// 时的响应;
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
//调用dispose以执行windowClosed
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dispose();
}
public void windowClosed(WindowEvent e)
{
if (player != null)
player.close();
System.exit(0);
}
});
//调用设置程序菜单栏的方法成员完成菜单的布置
setupMenu();
setSize(350, 300);
setVisible(true);
}
//本方法用以设置程序菜单栏
public void setupMenu()
{
//设置一个菜单
Menu f = new Menu("文件");
//往设置的菜单种添加菜单项
MenuItem mi = new MenuItem("打开");
mi.addActionListener(this);
f.add(mi);
f.addSeparator();
CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false);
cbmi.addItemListener(this);
f.add(cbmi);
f.addSeparator();
mi = new MenuItem("退出");
mi.addActionListener(this);
f.add(mi);
Menu l = new Menu("播放列表");
Menu c = new Menu("播放控制");

MenuItem move = new MenuItem("播放");
move.addActionListener(this);
c.add(move);
c.addSeparator();

MenuItem pause = new MenuItem("暂停");
pause.addActionListener(this);
c.add(pause);
c.addSeparator();

MenuItem stop = new MenuItem("停止");
stop.addActionListener(this);
c.add(stop);
c.addSeparator();

Menu a = new Menu("关于作者");
MenuItem about = new MenuItem("该死的温柔");
about.addActionListener(this);
a.add(about);
//设置一个菜单栏
MenuBar mb = new MenuBar();
//将设置的菜单依次加入程序的菜单栏中去
mb.add(f);
mb.add(c);
mb.add(l);
mb.add(a);
//将构造完成的菜单栏交给当前程序的窗口;
setMenuBar(mb);
}
//事件响应成员;捕捉发送到本对象的各种事件;
public void actionPerformed(ActionEvent e)
{
//设一个字符串用于暂存打开的媒体文件的路径;
String cufile , selcectfile;
if (e.getActionCommand().equals("退出"))
{
// 调用dispose以便执行windowClosed
//dispose();
this.setVisible(false);
return;
}

//次事件表明用户选择了"播放"菜单命令;
//如果当前有一个文件可以播放则执行播放命令;
if (e.getActionCommand().equals("播放"))
{
if (player != null)
{
player.start();
}
return;
}

//如果当前正在播放某一文件,则执行暂停;
if (e.getActionCommand().equals("暂停"))
{
if (player != null)
{
player.stop();
}
return;
}
if (e.getActionCommand().equals("关于作者"))
{
// 调用dispose以便执行windowClosed
//System.out.println("该死的温柔");

return;
}

//次事件表明用户选择了"播放"菜单命令;
//如果当前有一个文件可以播放则执行播放命令;
if (e.getActionCommand().equals("停止"))
{
if (player != null)
{
player.stop();
player.setMediaTime(new Time(0));
}
return;
}

//用户选择要播放的媒体文件
if (e.getActionCommand().equals("打开"))
{

FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);
fd.setDirectory(currentDirectory);
fd.show();

// 如果用户放弃选择文件,则返回
if (fd.getFile() == null)
return;

//保存了所选文件的名称及其全路径名称已被稍后使用
//同时设置当前文件夹路径
selcectfile = fd.getFile();
currentDirectory = fd.getDirectory();
cufile = currentDirectory + selcectfile;

//将用户选择的文件作为一个菜单项加入播放列表该菜单项"名为"该文件名;
//被点击后给出的命令串是该文件的全路径名
MenuItem mi = new MenuItem(selcectfile);
mi.setActionCommand(cufile);
MenuBar mb = getMenuBar();
Menu m = mb.getMenu(2);
mi.addActionListener(this);
m.add(mi);

}
else
{
//程序逻辑运行到此表示用户选择了一个"播放列表"中的媒体文件
//此时可以通过如下动作获得该文件的全路径名;
cufile = e.getActionCommand();
selcectfile = cufile;
}

//如果已存在一个播放器,则先将其关闭,稍后重新创建
//创建播放器时需要捕捉一些异常;
if (player != null)
player.close();
try
{
player = Manager.createPlayer(new MediaLocator("file:" + cufile));

}
catch (java.io.IOException e2)
{
System.out.println(e2);
return;
}
catch (NoPlayerException e2)
{
System.out.println("不能找到播放器.");
return;
}
if (player == null)
{
System.out.println("无法创建播放器.");
return;
}

first = false;
setTitle(selcectfile);
//设置处理播放控制器实际的对象;
player.addControllerListener(this);
player.prefetch();
}

//因为实现了"ControllerListener"接口,本方法用于处理媒体播放器传来的事件;
public void controllerUpdate(ControllerEvent e)
{
Container tainer = getContentPane();

// 调用player.close()时ControllerClosedEvent事件出现。
// 如果存在视觉部件,则该部件应该拆除(为一致起见,
// 我们对控制面板部件也执行同样的操作下一次需要时再构造)
if (e instanceof ControllerClosedEvent)
{
if (vc != null)
{
remove(vc);
vc = null;
}
if (cc != null)
{
remove(cc);
cc = null;
}
return;
}

//在播放结束时,将播放指针置为文件之首,如果设定了循环播放,则再次启动播放器;
if (e instanceof EndOfMediaEvent)
{
player.setMediaTime(new Time(0));
if (loop)
{
player.start();
}
return;
}

//PrefetchCompleteEvent事件发生后调用start,正式启动播放
if (e instanceof PrefetchCompleteEvent)
{
player.start();
return;
}

//本事件表示由于用于播放的资源已经确定;此时要将媒体的图形conmopnent
//(如果有)显示出来,同时将播放器player的控制器显示到窗口里;
if (e instanceof RealizeCompleteEvent)
{
//如果媒体中有图像,将对应图像component载入窗体;
vc = player.getVisualComponent();
if (vc != null)
tainer.add(vc, BorderLayout.CENTER);

//将对应控制器component载入窗体;
cc = player.getControlPanelComponent();
cc.setBackground(Color.BLUE);
if (cc != null)
tainer.add(cc, BorderLayout.SOUTH);

//有一些特殊媒体在播放时提供另外的控制手段,将该控制器一并加入窗口;
gc = player.getGainControl();
gcc = gc.getControlComponent();
if (gcc != null)
tainer.add(gcc, BorderLayout.NORTH);

//根据媒体文件中是否有图像,设定相应的窗口大小
if (vc != null)
{
pack();
return;
}
else
{
setSize(300, 75);
setVisible(true);
return;
}

}

}

//菜单状态改变事件的响应函数;
public void itemStateChanged(ItemEvent e)
{
loop = !loop;
}

//不执行背景清除操作,以免控制面板部件闪烁
//同时使得本程序在用鼠标拖动窗口时存在一些没有及时重绘的情况,有待改进
public void update(Graphics g)
{
paint(g);
}
/*
* 如果只是要退出程序或者关闭窗口的话,JFrame 有一个更方便的方法:
* JFrame.setDefaultCloseOperation(int operation),参数的值可能是:
* DO_NOTHING_ON_CLOSE
* HIDE_ON_CLOSE
* DISPOSE_ON_CLOSE
* EXIT_ON_CLOSE
*
* 这里可以这样改:
* this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
*/

//本类的main函数,其中构造了本类的一个实例;
public static void main(String[] args)
{
MediaPlayer mediaPlayer = new MediaPlayer("简单媒体播放器");
//mediaPlayer.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
if (player != null)
{
System.out.println("已经有一个相同的程序在运行");
return;
}
}

public void paint(Graphics g)
{
// 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器
// 和部件(包括控制面板部件)的paint()方法。
super.paint(g);

//以下代码实现了在开启程序之初显示欢迎界面
if (first)
{

int w = getSize().width;
int h = getSize().height;
g.setColor(Color.green);
g.fillRect(0, 0, w, h);
Font f = new Font("DialogInput", Font.CENTER_BASELINE, 20);
g.setFont(f);
FontMetrics fm = g.getFontMetrics();
int swidth = fm.stringWidth("欢迎使用播放器");
g.setColor(Color.black);
g.drawString(" 欢迎您简单媒体播放器 ",(w - swidth) / 3,(h + getInsets().top) / 2);

}
}
}
追问你的太复杂了。。

热心网友 时间:2023-10-27 08:20

使用play()方法进行播放,loop()方法循环播放,stop()方法停止播放。
实际例子:
File file1 = new File("src\\music\\11.wav");
AudioClip sound1;
sound1 = Applet.newAudioClip(file1.toURL());
sound1.play();
这样就实现了播放音乐的功能,注意J2SE默认只支持 wav格式的音频。

热心网友 时间:2023-10-27 08:20

代码比较复杂,你给我个邮箱吧,我给你发过去
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
贷款的话首付准备多少米能提A6L? 运来怎么造句 ...急死了,大家看清楚是不显示,不是没法输入啊,有没有高手指教_百度知 ... wps插入sjqy字体(wps文字添加艺术字体) sjqy钢筋符号字体怎么安装(sjqy钢筋符号字体怎么安装到wps) 钢筋符号等级怎么在wps输入? ...另一台显示乱码。看图。SJQY字库已安装。求解。在线等。 布艺沙发甲醛多久挥发 梦幻国度里那些艺术的装备,黄金的装备怎么来的? 梦幻国度点解有人会全身发光的 java播放音频文件的 java中哪个类用来播放声音文件 java程序中如何播放音频文件 怎么改变自己的原生家庭条件 JAVA 实现音频播放 什么样的家庭环境会让孩子感觉很压抑?该怎么改变? java编程:怎么播放一个音频? 我们怎么可以改变原生家庭对我们的影响? java如何播放声音 怎么改变一个家庭的传宗接代,子孙满堂的思想? 用Java代码能播放音频文件吗? 如何改变一个家庭重男轻女的观念? Java怎么实现音乐播放 怎样改善家庭气氛? java怎样播放声音文件? 如何改善家庭气氛? java如何播放声音文件? 怎么改变原生家庭给自己带来的自卑感? 原生家庭的影响该怎么改变? 家庭矛盾怎么改变 java如何实现播放mp3 java 控制台程序怎么调用声音文件? java能播放多种格式音频文件吗? java WEB如何播放声音 java能支持播放什么格式的音频文件 Java播放声音文件为什么总是出现异常? java中如何实现播放mp3音乐 可不可以把华为荣耀piay3智慧助手里加一项语音唤醒功能,谢谢 《人力资源》工作分析的内容是什么? 荣耀华为Play3为什么不能语音唤醒,还说不能设置唤醒词 人力资源管理中工作结构化分析的流程是什么? 请简述人力资源管理工作的运营流程? 人力资源管理规划的流程是什么 人力资源质量改进的工作流程? 人力资源管理六大模块的基本流程 人力资源规划步骤有哪些?重点是什么?最好是流程. 人力资源主要工作流程? 人力资源的工作分析怎么写? 注册公司不开公户可以吗 注册公司后一直未开业违法么?