我想把我的java小程序中嵌入一个背景音乐,写出添加背景音乐代码。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想把我的java小程序中嵌入一个背景音乐,写出添加背景音乐代码。相关的知识,希望对你有一定的参考价值。
在java小程序中添加背景音乐代码,要求写的详细一点代码,和注释,好的话会加分
放音乐的api网上查有很多,比如javax.sound.midi.*;支持midi,mid背景音乐的播放
public class Music implements MetaEventListener, Runnable
private Sequence sequence = null;
private Sequencer sequencer;
private boolean isPlaying = false;
private volatile Thread thread;
public Music()
public Music(String midifile)
try
loadMidi(midifile);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (InvalidMidiDataException e)
// TODO Auto-generated catch block
e.printStackTrace();
//导入midi文件到内存中传给Sequence对象,相当与编码器
public void loadMidi(String filename) throws IOException, InvalidMidiDataException
sequence = MidiSystem.getSequence(this.getClass().getResourceAsStream(filename));
//播放方法
public void play()
if(isPlaying)
return;
try
sequencer = MidiSystem.getSequencer();
sequencer.open();
//用Sequencer对象把声音文件序列解码出来播放
sequencer.setSequence(sequence);
sequencer.addMetaEventListener(this);
//设置循环次数,-1表示一直循环
sequencer.setLoopCount(-1);
sequencer.setLoopStartPoint(0);
sequencer.setLoopEndPoint(sequencer.getTickLength());
catch (MidiUnavailableException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (InvalidMidiDataException e)
// TODO Auto-generated catch block
e.printStackTrace();
if(thread == null)
thread = new Thread(this);
thread.start();
public void stop()
if(isPlaying)
sequencer.stop();
isPlaying = false;
if(thread != null)
thread = null;
public void meta(MetaMessage meta)
if(meta.getType() == 47)
System.out.println("Sequencer is done playing");
// TODO Auto-generated method stub
public void run()
// TODO Auto-generated method stub
Thread current = Thread.currentThread();
while(current == thread && !isPlaying)
sequencer.start();
isPlaying = true;
try
thread.sleep(1001);
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();
//用起来也很方便
public static void main(String[] args)
Music music = new Music("a.mid");
music.play();
如果这样写路径类要和音频文件放在一个目录下,如果你不想这样,有两种方法,一种是修改路径字符串,另一种是把Class.getResourceAsStream方法改成new FileInputStream 这两个方法加载资源的初始路径不同,前者找class文件所在目录,后者找project目录 参考技术A 希望有帮助
public void setBack()
((JPanel) mainFrame.getContentPane()).setOpaque(false);
// Winter.jpg这个图片的位置要跟当前这个类是同一个包下
URL url = StudentManager.class.getResource("Winter.jpg");
ImageIcon img = new ImageIcon(url);
JLabel background = new JLabel(img);
mainFrame.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
放在main函数上边就可以了,给你修改一下算了:
package com.jpioneer.swing;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;
public class StudentManager
JFrame mainFrame; // 主框架、主窗口
public StudentManager()
mainFrame = new JFrame("教育经历管理系统--植物人工作室出品");
// 创建菜单栏JMenuBar
JMenuBar menuBar = new JMenuBar();
// 创建菜单JMenu
JMenu menu = new JMenu("菜单选项");
// 创建菜单项目JMenuItem
JMenuItem input = new JMenuItem("录入对象信息");
input.addActionListener(new MenuHandler());
JMenuItem modify = new JMenuItem("修改对象信息");
modify.addActionListener(new MenuHandler());
JMenuItem inquest = new JMenuItem("查询对象信息");
inquest.addActionListener(new MenuHandler());
JMenuItem delete = new JMenuItem("删除对象信息");
delete.addActionListener(new MenuHandler());
// 把菜单项目JMenuItem添加到菜单JMenu当中
menu.add(input);
menu.add(modify);
menu.add(inquest);
menu.add(delete);
// 把菜单JMenu添加到菜单栏JMenuBar当中
menuBar.add(menu);
// 把菜单栏JMenuBar添加到框架上
mainFrame.setJMenuBar(menuBar);
// 创建标签
JLabel myLabel = new JLabel("教育经历管理系统");
myLabel.setForeground(Color.red);
myLabel.setSize(50, 5);
JPanel pan = new JPanel();
pan.add(myLabel);
// 把标签所在的容器设置为框架的内容面板
mainFrame.setContentPane(pan);
mainFrame.setSize(500, 500);
mainFrame.setVisible(true);
// 关闭框架的处理
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//看到这个setBack了吗?在这调用就可以了!!!!!!
this.setBack();
class MenuHandler implements ActionListener
public void actionPerformed(ActionEvent e)
if (e.getActionCommand().equals("录入对象信息"))
// new Input(); // 如果是录入信息,则产生录入窗口
if (e.getActionCommand().equals("查询对象信息"))
// new Inquest(); // 如果是查询信息,则产生查询窗口
public void setBack()
((JPanel) mainFrame.getContentPane()).setOpaque(false);
// Winter.jpg这个图片的位置要跟当前这个类是同一个包下
URL url = StudentManager.class.getResource("Winter.jpg");
ImageIcon img = new ImageIcon(url);
JLabel background = new JLabel(img);
mainFrame.getLayeredPane().add(background,
new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
public static void main(String args[])
new StudentManager();
参考资料:http://www.myhql.cn
参考技术B 我想你只是想在自己的程序中加上点儿音乐吧,不必要那么复杂,多了你一时也看不明白,下面是加入音乐的小程序,你看明白了再改改,加在你想用的地方就好了,看不懂再问吧,调试的时候记得修改文件路径啊:import java.io.File;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
public class Mytest
Player player = null;
public void LoadAndPlay()
File mufile = new File("D:\\aa\\菠萝菠萝蜜.mp3");
try
if (player == null)
if (mufile.exists())
MediaLocator locator = new MediaLocator("file:"
+ mufile.getAbsolutePath());
player = Manager.createRealizedPlayer(locator);
player.prefetch();
player.start();// 开始播放
catch (Exception e)
e.getStackTrace();
public static void main(String[] args)
Mytest mytest=new Mytest();
mytest.LoadAndPlay();
参考技术C 朋友给我了一个类,大小0.6K,用类名.play(音频文件名); 就行了,我一直在用。如:
public class Test
public static void main(String[] args)
AuPlay.play("526.wav");
音频格式是.au或.wav,类和音频文件要在同一目录下。要的话留个邮箱,我发给你。呵呵
以上是关于我想把我的java小程序中嵌入一个背景音乐,写出添加背景音乐代码。的主要内容,如果未能解决你的问题,请参考以下文章
计算机专科生,毕业3年从小厂到阿里P6,想把我的进阶方法教给你
在winfrom中,我有一个dataGridView,第一列就是checkbox,我怎么判断我是不是选中,我想把我选中的行的第二