Java 实现声音播放程序

 更新时间:2020年12月22日 17:18:30   作者:小星_log  
这篇文章主要介绍了Java 实现声音播放程序的示例代码,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
package newpackage1;

import java.applet.AudioClip;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

// 声音播放程序

public class AudioPlayDemo  extends JFrame  implements ActionListener, ItemListener {
  boolean looping = false; //是否循环播放
  String[] choics = { "chimes.wav", "start.wav" }; //声音文件名数组
  URL file1 = getClass().getResource(choics[0]); //声音文件1
  URL file2 = getClass().getResource(choics[1]); //声音文件2
  AudioClip sound1 = java.applet.Applet.newAudioClip(file1); //声音剪辑对象1
  AudioClip sound2 = java.applet.Applet.newAudioClip(file2); //声音剪辑对象2
  AudioClip chosenClip = sound1; //选择的声音剪辑对象

  JComboBox jcbFiles = new JComboBox(choics); //文件选择组合框
  JButton playButton = new JButton("播放"); //播放按钮
  JButton loopButton = new JButton("循环播放"); //循环播放按钮
  JButton stopButton = new JButton("停止"); //停止播放按钮
  JLabel status = new JLabel("选择播放文件"); //状态栏标签
  JPanel controlPanel = new JPanel(); //控制面板用于包容按钮
  Container container = getContentPane(); //获得窗口内容窗格

  public AudioPlayDemo() { //构造器
    super("声音播放程序"); //调用父类构造器设置窗口标题栏

    jcbFiles.setSelectedIndex(0); //设置组合框选择项
    jcbFiles.addItemListener(this); //为播放按钮添加项目监听器
    //为播放按钮、循环播放按钮、停止播放按钮添加动作监听器
    playButton.addActionListener(this);
    loopButton.addActionListener(this);
    stopButton.addActionListener(this);
    stopButton.setEnabled(false); //设置停止播放按钮不可用
    //把播放按钮、循环播放按钮、停止播放按钮加入控制面板
    controlPanel.add(playButton);
    controlPanel.add(loopButton);
    controlPanel.add(stopButton);
    //把文件选择组合框、控制面板、状态栏标签加入到窗口内容窗格
    container.add(jcbFiles, BorderLayout.NORTH);
    container.add(controlPanel, BorderLayout.CENTER);
    container.add(status, BorderLayout.SOUTH);

    setSize(300, 130); //设置窗口大小
    setVisible(true); //设置窗口可视
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
  }
  //文件选择组合框事件处理
  public void itemStateChanged(ItemEvent e) {
    if (jcbFiles.getSelectedIndex() == 0) {
      chosenClip = sound1;
    } else {
      chosenClip = sound2;
    }
  }
  //按钮事件处理
  public void actionPerformed(ActionEvent event) {
    if (chosenClip == null) {
      status.setText("声音未载入");
      return; //如果AudioClip对象为空,则直接返回
    }
    Object source = 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("停止播放"); //设置状态栏信息
    }
  }

  public static void main(String s[]) {
    new AudioPlayDemo(); //创建AudioPlayDemo对象
  }
}

以上就是Java 实现声音播放程序的详细内容,更多关于Java 声音播放的资料请关注脚本之家其它相关文章!

相关文章

  • Java利用Jackson轻松处理JSON序列化与反序列化

    Java利用Jackson轻松处理JSON序列化与反序列化

    Jackson 是 Java 中最流行的 JSON 处理库之一,它提供了许多注解来简化 JSON 的序列化和反序列化过程。这篇文章将介绍一些 Jackson 常用的注解,以帮助您更轻松地处理 JSON 数据
    2023-05-05
  • 如何设计一个安全的API接口详解

    如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下
    2021-08-08
  • Jenkins自动化部署springboot代码实例

    Jenkins自动化部署springboot代码实例

    这篇文章主要介绍了Jenkins自动化部署springboot代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Spring MVC 处理Ajax请求的方式详解

    Spring MVC 处理Ajax请求的方式详解

    本文介绍了在SpringMVC中处理Ajax请求的方法,主要依赖于Controller和返回类型的配置,使用@RequestMapping注解处理Ajax的控制器方法,本文给大家介绍Spring MVC 处理Ajax请求的方式,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • 堆排序实例(Java数组实现)

    堆排序实例(Java数组实现)

    下面小编就为大家分享一篇使用Java数组实现堆排序的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • JAVA“无法验证证书。将不执行该应用程序。”提示解决办法

    JAVA“无法验证证书。将不执行该应用程序。”提示解决办法

    这篇文章主要给大家介绍了关于JAVA“无法验证证书,将不执行该应用程序”提示的解决办法,要解决Java无法验证证书的问题,可以尝试下本文的方法,需要的朋友可以参考下
    2024-03-03
  • spring mail借助qq邮箱服务器发送邮件

    spring mail借助qq邮箱服务器发送邮件

    这篇文章主要介绍了spring mail借助qq邮箱服务器发送邮件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Spring Boot使用Spring的异步线程池的实现

    Spring Boot使用Spring的异步线程池的实现

    这篇文章主要介绍了Spring Boot使用Spring的异步线程池的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 解决java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包问题

    解决java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包问题

    这篇文章主要介绍了解决java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • java集合Collection常用方法解读

    java集合Collection常用方法解读

    这篇文章主要介绍了java集合Collection常用方法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论