如何将背景音乐添加到我的程序中?
Posted
技术标签:
【中文标题】如何将背景音乐添加到我的程序中?【英文标题】:How can i add background music to my program? 【发布时间】:2013-08-31 21:50:56 【问题描述】:我正在尝试将背景音乐添加到我的程序中,但是当我指定音频文件的路径时,我收到了错误消息。我怎么能指定这个(这将被发送给另一个人)。所以路径不能在我的系统上,它也必须位于 JAR 中。
package main;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
javax.sound.sampled.Audiosystem;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
public class Main extends JFrame
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args)
EventQueue.invokeLater(new Runnable()
public void run()
try
Main frame = new Main();
frame.setVisible(true);
PlaySound();
catch (Exception e)
e.printStackTrace();
);
/**
* Create the frame.
*/
public static void PlaySound()
InputStream in;
try
in = new FileInputStream(new File("/audio/Happy_Happy_Birthday.wav"));
AudioStream audios = new AudioStream(in);
AudioPlayer.player.start(audios);
catch (Exception e)
JOptionPane.showMessageDialog(null, e);
public Main()
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 717, 508);
contentPane = new JPanel()
/**
*
*/
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g)
Image img = Toolkit.getDefaultToolkit().getImage(
Main.class.getResource("/images/happy_birthday.jpg"));
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
;
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
【问题讨论】:
/audio/Happy_Happy_Birthday 没有扩展名,您确定它是音频文件吗?它需要扩展。 我的错是复制代码时出错,我有扩展名但仍然出现错误 虽然没有使用音频子系统的经验,但我不愿意在与 UI 相同的线程中播放音频。 【参考方案1】: 使用URL
而不是File
加载剪辑。到部署时,这些资源可能会变成embedded-resource。在这种情况下,资源必须由URL
而不是File
访问。请参阅标签的info page,了解形成URL
的方法。
使用javax.sound.sampled.Clip
播放声音(相对于sun.audio
包中未记录的类)。请参阅Java Sound info. page 获取工作源代码。
【讨论】:
【参考方案2】:InputStream in;
try
in = new FileInputStream(new File("Jock_Jams_-_Are_You_Ready_For_This.wav"));
AudioStream audios = new AudioStream(in);
AudioPlayer.player.start(audios);
catch (Exception e)
JOptionPane.showMessageDialog(null, e);
我在我的 while 循环之外使用它,只要你不介意它无法停止它就可以工作。
【讨论】:
以上是关于如何将背景音乐添加到我的程序中?的主要内容,如果未能解决你的问题,请参考以下文章