1. JAVA做音乐播放器简单吗
思路很简单,就是用第三方的java mp3解码器完成文件播放功能,然后用swing组件包装一下就行。刚好回业界有一个答JMF java media framework,是大名鼎鼎的sun开发的。详看这里的官方网页:http://java.sun.com/procts/java-media/jmf/。网上也有很多JMF教程。
我曾经做过一个简单的,支持文件列表。这是一个很好的编程训练。
2. java编音乐播放器
package bofan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.File.*;
import java.io.*;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
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 java.beans.*;
public class yinyue{
private static String path = "a.mp3";
public static void main(String[] args) {
File f1 = new File(path);
try {
Player player = Manager.createRealizedPlayer(f1.toURI().toURL());
System.out.println("获得文件播放时间: "
+ player.getDuration().getSeconds());
player.prefetch();
player.setMediaTime(new Time(10.0));//从莫个时间段开始播放
player.start();
}catch(Exception ex){}
}
}
3. 求一个JAVA音乐播放器的源代码
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MediaPlayer extends JFrame implements ActionListener,
ItemListener, ControllerListener {
String title;
Player player;
boolean first = true, loop = false;
Component vc, cc;
String currentDirectory=null;
// 构造函数,其中包括了设置响应窗口事件的监听器。
MediaPlayer(String title) {
super(title);
/* 关闭按钮的实现。。 */
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
public void windowClosed(WindowEvent e) {
if (player != null)
player.close();
System.exit(0);
}
});
// 调用程序菜单栏的方法成员完成菜单的布置
setupMenu();
setSize(400, 400);
setVisible(true);
}
// 本方法用以设置程序菜单栏
public void setupMenu() {
// 设置一个菜单
Menu f = new Menu("文件");
// 往设置的菜单添加菜单项
MenuItem mi = new MenuItem("打开");
f.add(mi);
mi.addActionListener(this);
f.addSeparator();
CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false);
cbmi.addActionListener(this);
f.add(cbmi);
f.addSeparator();
MenuItem ee = new MenuItem("退出");
ee.addActionListener(this);
f.add(ee);
f.addSeparator();
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();
// 设置一个菜单栏
MenuBar mb = new MenuBar();
mb.add(f);
mb.add?;
mb.add(l);
// 将构造完成的菜单栏交给当前程序的窗口;
setMenuBar(mb);
}
// 动作时间响应成员;捕捉发送到本对象的各种事件;
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String cufile, selectfile, currentDirectory;
if (e.getActionCommand().equals("退出")) {
// 调用dispose以便执行windowClosed
dispose();
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("停止")) {
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);
2008-2-6 02:46 回复
肆方茉莉
62位粉丝
6楼
fd.setVisible(true);
// 如果用户放弃选择文件,则返回
if (fd.getFile() == null) {
return;
}
// 保存了所选文件的名称及其路径名称已被稍后使用
// 同时设置当前文件夹路径
selectfile = fd.getFile();
currentDirectory = fd.getDirectory();
cufile = currentDirectory + selectfile;
// 将用户选择的文件作为一个菜单项加入播放列表,该菜单项名为该文件名;
// 被点击后给出的命令串是该文件的全路径名
MenuItem mi = new MenuItem(selectfile);
mi.setActionCommand(cufile);
MenuBar mb = getMenuBar();
Menu m = mb.getMenu(2);
mi.addActionListener(this);
m.add(mi);
} else {
// 程序逻辑运行到次表示用户选择了一个“播放列表”中的媒体文件
// 此时可以通过如下动作获得该文件的全路径名
cufile = e.getActionCommand();
selectfile = cufile;
}
// 如果存在一个播放器,则先将其关闭,稍后再重新创建
// 创建播放器时需要捕捉一些异常
if (player != null) {
player.close();
}
try {
player = Manager.createPlayer(new MediaLocator("file:" + cufile));
} catch (Exception e2) {
System.out.println(e2);
return;
}/*
* catch(NoPlayerException e2){ System.out.println("不能找到播放器");
* return ; }
*/
if (player == null) {
System.out.println("无法创建播放器");
return;
}
first = false;
setTitle(selectfile);
// 设置处理播放控制器实际的对象;
/**/
player.addControllerListener(this);
player.prefetch();
}
// 菜单状态改变事件的响应函数;
public void itemStateChanged(ItemEvent arg0) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MediaPlayer("播放器");
}
// 调用绘图函数进行界面的绘制 // public void update() {
// }
// 绘图函数成员 //public void paint(Graphics g) {
// }
public void controllerUpdate(ControllerEvent e) {
// TODO Auto-generated method stub
Container tainer = getContentPane();
// 调用player.close()时ControllerClosedEvent事件出现
// 如果存在视觉部件,则该部件应该拆除(为了一致起见,我们对控制面版部件也执行同样的操作,下一次需要时再构造)
if (e instanceof ControllerClosedEvent) {
if (vc != null) {
remove(vc);
vc = null;
}
if (cc != null) {
remove(cc);
cc = null;
}
}
// 播放结束时,将播放指针置于文件之首,如果设定了循环播放,则再次启动播放器;
if (e instanceof EndOfMediaEvent) {
player.setMediaTime(new Time(0));
if (loop) {
player.start();
}
return;
}
// PrefetchCompletEvent事件发生后调用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;
}
}
} }
4. java制作音乐播放器要求实现换肤歌词显示!谁有制作视频急求
简单的说下思路:
Swing窗口可以通过 更改 Look and Feel 来更好主题, 实现皮肤的更换.
LRC文件,可以通过IO流读专取到内存,然后进行属解析. 在声音播放到指定的时间点,显示歌词
JavaFX 是比Swing更好的选择 ,切换CSS文件, 轻松实现换肤功能. 并且JavaFX的多媒体功能更加强大, 还支持3D绘图
5. JAVA的SWING中哪个控件可以播放音乐
any class' methods of Swing cannot play sounds.
but you can use:Applet,JMF and Java Sound API(javax.sound.sampled.* and javax.sound.midi.*)
Swing is only GUI components.
6. 求高手帮忙!网上找了个40多行java简单音乐播放器,界面都有,运行也没有报错。但没有声音
代码没错,所以只能是音乐放错文件位置了,应该放在你建立的工作区下面,你这里应该是放在工作区的Applet的文件夹下面。
7. 怎样通过java打开音乐播放器
java中打开音乐播放器的方式是使用audioclip类来播放音乐,实例如下:
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.net.*;
importjavax.swing.*;
importjava.io.File;
{
booleanlooping=false;
Filefile1=newFile("music\明天会更好.wav");
AudioClipsound1;
AudioClipchosenClip;
JButtonplayButton=newJButton("播放");
JButtonloopButton=newJButton("循环播放");
JButtonstopButton=newJButton("停止");
JLabelstatus=newJLabel("选择播放文件");
JPanelcontrolPanel=newJPanel();
Containercontainer=getContentPane();
publicAudioPlayDemo(){
try{
sound1=Applet.newAudioClip(file1.toURL());
chosenClip=sound1;
}catch(OutOfMemoryErrore){
System.out.println("内存溢出");
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
playButton.addActionListener(this);
loopButton.addActionListener(this);
stopButton.addActionListener(this);
stopButton.setEnabled(false);
controlPanel.add(playButton);
controlPanel.add(loopButton);
controlPanel.add(stopButton);
container.add(controlPanel,BorderLayout.CENTER);
container.add(status,BorderLayout.SOUTH);
setSize(300,130);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
}
publicvoidactionPerformed(ActionEventevent){
if(chosenClip==null){
status.setText("声音未载入");
return;
}
Objectsource=event.getSource();//获取用户洗涤激活的按钮
if(source==playButton){
stopButton.setEnabled(true);
loopButton.setEnabled(true);
chosenClip.play();
status.setText("正在播放");
}
if(source==loopButton){
looping=true;
chosenClip.loop();
loopButton.setEnabled(false);
stopButton.setEnabled(true);
status.setText("正在循环播放");
}
if(source==stopButton){
if(looping){
looping=false;
chosenClip.stop();
loopButton.setEnabled(true);
}else{
chosenClip.stop();
}
stopButton.setEnabled(false);
status.setText("停止播放");
}
}
publicstaticvoidmain(Strings[]){
newAudioPlayDemo();
}
}
只能播放wav格式的歌曲
8. java 音乐播放器
//哈哈昨晚上刚做了一个基本功能是有美化和完善就靠你了,代码如下:
//顺便说一下你电脑里需要有javax.media包才行,没有的话和我说。
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.File;
importjavax.media.Manager;
importjavax.media.MediaLocator;
importjavax.media.Player;
importjavax.swing.AbstractAction;
importjavax.swing.JButton;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
publicclassMusicDemo{
publicstaticvoidmain(Stringargs[])throwsInterruptedException{
MusicPlayermp=newMusicPlayer("音乐播放器");
}
}
{
JButtonbtnOK=newJButton("选歌");
JLabellblCaption=newJLabel("Hello!China!");
JButtonbtnCancel=newJButton("播放");
Playerplay=null;
Stringpath="";
MusicPlayer(Stringtitile){
super(titile);
doublely=Toolkit.getDefaultToolkit().getScreenSize().getHeight();
doublelx=Toolkit.getDefaultToolkit().getScreenSize().getWidth();
setLocation((int)lx/3,(int)ly/3);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,200);
btnOK.setBounds(0,0,80,30);
this.getContentPane().add(btnOK);
lblCaption.setBounds(5,40,120,30);
this.getContentPane().add(lblCaption);
btnCancel.setBounds(120,0,80,30);
this.getContentPane().add(btnCancel);
btnOK.addActionListener(newAbstractAction(){
publicvoidactionPerformed(ActionEvente){
lblCaption.setText("YouClickOK!");
path=open();
}
}
);
btnCancel.addActionListener(newAbstractAction(){
publicvoidactionPerformed(ActionEvente){
lblCaption.setText("YouClickCancel!");
try{
Filefile=newFile(path);
if(play==null){
if(file.exists()){
MediaLocatorlocator=newMediaLocator("file:"+file.getAbsolutePath());
play=Manager.createRealizedPlayer(locator);
play.prefetch();
add(play.getControlPanelComponent(),"South");
play.start();
}
}
}catch(Exceptione1){
e1.printStackTrace();
}
}
});
}
Stringopen(){
StringfilePath="";
JFileChooserfileChooser=newJFileChooser();
fileChooser.setDialogTitle("选择歌...");
//fileChooser.setFileSelectionMo(JFileChooser.DIRECTORIES_ONLY);
intreturnVal=fileChooser.showOpenDialog(fileChooser);
if(returnVal==JFileChooser.APPROVE_OPTION){
filePath=fileChooser.getSelectedFile().getAbsolutePath();
}
returnfilePath;
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
}
}
9. 单击一个按钮时播放音乐怎么用java swing来实现的
AudioClip sound=Applet.newAudioClip(url)
sound.play();
10. java中Swing怎么添加音乐
JAVA应用程序添加背景音乐示例:
1.先定义一个 URL 对象,并赋NULL值;
URL musicURL = null;
2.然后为定义的 URL 赋值,即得到要播放的URL地址,
musicURL = new URL( "音乐地址");//得到要播放音乐的url
3.创建一个播放音频的实例,并得到这个实例
AudioClip ac = Applet.newAudioClip(musicURL); //得到一个播放音频的实例
4.进行播放控制
ac.play(); //播放一编
ac.loop(); //循环播放
ac.stop();//停止
播放本地音乐示例:
private void playMusic(){
try {
javax.media.Player player;
if(null==player){
File musicFile=new File("./music.mp3");//得到一个MP3文件
if(musicFile.exists()){
MediaLocator locator=new MediaLocator("file:"+musicFile.getAbsolutePath());
player = Manager.createRealizedPlayer(locator);
player.prefetch();//预读文件
}else{
System.err.println(pro.getMusicFile()+" 找不到");
}
}
//centerpanel.add(player.getControlPanelComponent()!=null?player.getControlPanelComponent():null);//显示播放工具
player.start();//播放
} catch (CannotRealizeException ex) {
ex.printStackTrace();
} catch (NoPlayerException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}