当前位置:   article > 正文

java在窗口添加背景音_java给窗口游戏添加背景音乐

java给窗口游戏添加背景音乐

有两种方法:

方法一如下:

可以使用Java Swing里的JFrame类,在JFrame对象上添加一个JLabel,将背景音乐文件加载到JLabel上面就可以了。下面是一个例子:

  1. import java.awt.BorderLayout;
  2. import java.io.File;
  3. import javax.swing.*;
  4. public class MainFrame extends JFrame {
  5. private JLabel bgLabel;
  6. public MainFrame() {
  7. // 设置窗口标题
  8. setTitle("Java背景音乐");
  9. // 设置窗口大小
  10. setSize(300, 200);
  11. // 设置窗口位置
  12. setLocationRelativeTo(null);
  13. // 设置窗口关闭操作
  14. setDefaultCloseOperation(EXIT_ON_CLOSE);
  15. // 创建背景标签
  16. bgLabel = new JLabel(new ImageIcon("bg.jpg"));
  17. // 加载背景音乐文件
  18. File bgMusicFile = new File("bgMusic.wav");
  19. if (bgMusicFile.exists()) {
  20. AudioClip bgMusic = JApplet.newAudioClip(bgMusicFile.toURI().toURL());
  21. bgMusic.loop();
  22. }
  23. // 添加背景标签到窗口
  24. add(bgLabel, BorderLayout.CENTER);
  25. }
  26. public static void main(String[] args) {
  27. MainFrame frame = new MainFrame();
  28. frame.setVisible(true);
  29. }
  30. }

在这个例子中,我们将一个背景图片放在窗口中央的JLabel上,然后在程序启动时加载了一个背景音乐文件。注意,必须使用绝对路径加载文件,否则会出现找不到文件的异常。

方法二如下

  1. import com.brid.util工具类.Musicutil;
  2. public class GameApp {
  3. public static void main(String[] args) {
  4. Musicutil music=new Musicutil("D:\\java\\小游戏\\src\\music/bei.wav");
  5. music.start();
  6. @SuppressWarnings("unused")
  7. int musicOpenLab =1;
  8. }
  9. }
  1. import java.io.File;
  2. import java.io.IOException;
  3. import javax.sound.sampled.AudioFormat;
  4. import javax.sound.sampled.AudioInputStream;
  5. import javax.sound.sampled.AudioSystem;
  6. import javax.sound.sampled.DataLine;
  7. import javax.sound.sampled.FloatControl;
  8. import javax.sound.sampled.LineUnavailableException;
  9. import javax.sound.sampled.SourceDataLine;
  10. import javax.sound.sampled.UnsupportedAudioFileException;
  11. public class Musicutil extends Thread {
  12. private String fileName;
  13. private final int EXTERNAL_BUFFER_SIZE = 520888;
  14. public Musicutil(String wavFile) {
  15. this.fileName = wavFile;
  16. }
  17. @SuppressWarnings("unused")
  18. public void run() {
  19. File soundFile = new File(fileName); // 播放音乐的文件名
  20. if (!soundFile.exists()) {
  21. System.err.println("Wave file not found:" + fileName);
  22. return;
  23. }
  24. while (true) { // 设置循环播放
  25. AudioInputStream audioInputStream = null; // 创建音频输入流对象
  26. try {
  27. audioInputStream = AudioSystem.getAudioInputStream(soundFile); // 创建音频对象
  28. } catch (UnsupportedAudioFileException e1) {
  29. e1.printStackTrace();
  30. return;
  31. } catch (IOException e1) {
  32. e1.printStackTrace();
  33. return;
  34. }
  35. AudioFormat format = audioInputStream.getFormat(); // 音频格式
  36. SourceDataLine auline = null; // 源数据线
  37. DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
  38. try {
  39. auline = (SourceDataLine) AudioSystem.getLine(info);
  40. auline.open(format);
  41. } catch (LineUnavailableException e) {
  42. e.printStackTrace();
  43. return;
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. return;
  47. }
  48. if (auline.isControlSupported(FloatControl.Type.PAN)) {
  49. FloatControl pan = (FloatControl) auline.getControl(FloatControl.Type.PAN);
  50. }
  51. auline.start();
  52. int nBytesRead = 0;
  53. byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
  54. try {
  55. while (nBytesRead != -1) {
  56. nBytesRead = audioInputStream.read(abData, 0, abData.length);
  57. if (nBytesRead >= 0)
  58. auline.write(abData, 0, nBytesRead);
  59. }
  60. } catch (IOException e) {
  61. e.printStackTrace();
  62. return;
  63. } finally {
  64. auline.drain();
  65. // auline.close();
  66. }
  67. }
  68. }
  69. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/759691
推荐阅读
相关标签
  

闽ICP备14008679号