我想提出一个纸牌游戏,而且它几乎完成了。 我想做的最后一件事是播放一些背景音乐。 现在,如果我将文件复制到默认的包,使游戏的一个JAR文件,将在音乐上的所有电脑上播放? 目前,我的电脑上它没有任何问题给予一个特定的路径,如文件上运行"C:\\samp.wav";
。 但我担心,如果我做一个jar文件,另一台PC上运行它,它会无法正常工作。 我认为会有一个FileNotFoundException
。 我是对还是错?
对于该卡的图像我使用这行:
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/1.jpg")));
那些照片我已经插入我的默认包。 我想要做的音乐文件相同,但如何? 我使用NetBeans。
你应该包括你的应用程序罐内的wav文件。 这样,您就不必来管理用户的文件系统中的文件的复印件(请记住,例如,在UNIX,MAC等你无法通过访问硬盘驱动器C:/...
)。
例如,如果你把WAV文件的应用程序的jar的根( app.jar/samp.wav
):
InputStream is = getClass().getClassLoader().getResourceAsStream("samp.wav");
或者,如果你的应用程序的jar根有一个“声音”目录( app.jar/sounds/samp.wav
):
InputStream is = getClass().getClassLoader().getResourceAsStream("sounds/samp.wav");
检查这个职位有关播放WAV文件与Java的额外信息(虽然你的问题,我想你已经解决了这个问题)。 考虑并发挥它在一个单独的线程。 还要检查这个网站的例子关于Java的管理媒体文件。
import javax.swing.*;
import sun.audio.*;
import java.awt.event.*;
import java.io.*;
public class Sound {
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(200,200);
JButton button = new JButton("Click me");
frame.add(button);
button.addActionListener(new AL());
frame.setVisible(true);
}
public static class AL implements ActionListener{
public final void actionPerformed(ActionEvent e){
music();
}
}
public static void music(){
AudioPlayer MGP = AudioPlayer.player;
AudioStream BGM;
AudioData MD;
ContinuousAudioDataStream loop = null;
try{
BGM = new AudioStream(new FileInputStream("C:\\test\\ha.wav"));
MD = BGM.getData();
loop = new ContinuousAudioDataStream(MD);
}catch(IOException error){
System.out.print("file not found");
}
MGP.start(loop);
}
}