Java语言程序设计基础篇_编程练习题16.22(播放、循环播放和停止播放一个音频剪辑)

news2024/12/24 2:50:45

题目:16.22(播放、循环播放和停止播放一个音频剪辑)

  编写一个满足下面要求的程序:

  1. 使用AudioClip获取一个音频文件,该文件存放在类目录下。
  2. 放置三个标记为Play、Loop和Stop的按钮,如图16-46a所示。
  3. 单击Play按钮时,会播放该音频一次。单击Loop按钮时,会循环播放音频。单击Stop按钮时,会停止播放该音频。
习题思路
  1. 创建一个HBox,新建三个按钮并放置。
  2. 新建一个AudioClip(AudioClip和Media一样只支持绝对路径),为避免文件错误,相对路径建议使用File转换为绝对路径后再创建AudioClip;或者直接在绝对路径前面添加file:/(推荐)
  3. 当Play按钮按下时播放音频AudioClip.play()
  4. 当Loop按钮按下时把循环次数设为无限(audioClip.setCycleCount(MediaPlayer.INDEFINITE)
  5. 当Stop按钮按下时调用AudioClip的Stop方法(AudioClip没有暂停只有停止)
  • 代码示例 

 编程练习题16_22PlayAudio.java

package chapter_16;


import java.io.File;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.media.AudioClip;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

public class 编程练习题16_22PlayAudio extends Application{
	@Override
	public void start(Stage primaryStage) throws Exception {
		//方法一
		/*File mediaFile = new File("src/Music/Coming_Home-Peter_Jeremias.mp3");  
        String mediaURL = mediaFile.toURL().toString();  
        if (!mediaURL.startsWith("file:")) {  
            mediaURL = "file:" + mediaURL;  
        }  
        AudioClip audioClip = new AudioClip(mediaURL);*/
		
        //方法二
		//AudioClip audioClip = new AudioClip("file:/C:/Users/Lenovo/eclipse-workspace/JavaFX/src/Music/截取.mp3");//可以用一个短的音频来测试Loop
		AudioClip audioClip = new AudioClip("file:/C:/Users/Lenovo/eclipse-workspace/JavaFX/src/Music/Coming_Home-Peter_Jeremias.mp3");
		
		HBox hBox = new HBox(10);
		hBox.setAlignment(Pos.CENTER);
		Button btPlay = new Button("Play");
		Button btLoop = new Button("Loop");
		Button btStop = new Button("Stop");
		hBox.getChildren().addAll(btPlay,btLoop,btStop);
		
		btPlay.setOnAction(e -> audioClip.play());
		btLoop.setOnAction(e -> audioClip.setCycleCount(MediaPlayer.INDEFINITE));
		btStop.setOnAction(e -> audioClip.stop());
		
		
		Scene scene = new Scene(hBox,320, 80);
		primaryStage.setTitle("编程练习题16_22PlayAudio");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  •  结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是调度中心控制台,它在现代运营管理中扮演什么角色?

在现代复杂多变的运营环境中,调度中心控制台作为企业内部信息管理的核心枢纽,扮演着至关重要的角色。它不仅是一个技术平台,更是企业高效运营和智能决策的重要支撑。接下来就给大家科普一下关于调度中心控制台知识点,及在现代运营…

HarmonyOS笔记4:从云数据库获取数据

移动应用获取数据的方式主要有: 1.从网络中获取数据接口API。 2.从华为云数据库获取云数据库的资源。 3.从移动终端直接获取本地的数据 在HarmonyOS笔记3中已经完成了方式一从网络中获取数据接口API的方式。在本篇笔记中,将讨论从云数据库中获取数据。 因…

极狐GitLab CI/CD 如何构建镜像并推送到 azure 镜像仓库?

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…

远程访问安全:rsync、ProFTPD、OpenSSH和VNC漏洞分析

文章目录 rsync未授权访问概念复现个别工具检测批量工具检测 proftpd远程命令介绍CVE-2015-3306复现 openssh信息泄露介绍复现 libssh身份绕过介绍条件危害复现 向日葵远程RCE介绍条件靶场: VNC配置不当介绍复现 在当今高度互联的数字时代,远程访问工具已…

[Qt][Qt 事件][上]详细讲解

目录 1.事件介绍2.事件的处理3.鼠标事件4.按键事件5.moveEvent6.resizeEvent 1.事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称 在Qt中使⽤⼀个对象来表⽰⼀个事件,所有的Qt事件均继承于抽象类QEvent 事件是由系统或者Qt平台本⾝在不同的时刻发出的…

深入理解C#中的yield关键字:提升迭代性能与效率

文章目录 前言一、yield return二、yield break总结 前言 在C#中,yield 关键字是特别用于迭代器块和方法中的,它允许你逐个返回序列中的元素,而不是一次性返回整个集合。使用 yield 可以显著提高处理大数据集或进行复杂迭代时的性能和内存效率…

【数据结构初阶】队列经典习题两道

hello! 我是云边有个稻草人 目录 一、用队列实现栈 二、用栈实现队列 Relaxing Time ! 正文开始—— 一、用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode) 根据题目要求,我们要用两个队列来实现栈的相关功能&…

虚拟机上使用Ubuntu1804上编译qt5.12.9部署到jetson nano上

开发qt界面,基于Qt5.12.9,开发环境使用虚拟机加载Ubuntu1804,开发完成后的qt程序最后部署到jetson nano上,使用的通用编译器是gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu 安装编译器 本文中直接将gcc-linaro-7.5.0-2019.…

汇昌联信做拼多多店铺如何运营?

汇昌联信如何在拼多多上运营店铺,是许多电商新手和希望扩展市场的商家所关注的问题。在这个快速发展的电商平台上,掌握正确的运营策略,对于提升店铺销量、增强品牌影响力至关重要。接下来,我们将详细探讨如何有效运营拼多多店铺。…

Angular由一个bug说起之九:AWS S3 文件下载问题

引言 在现代 Web 开发中,我们经常需要处理来自全球不同地区的数据,这包括文件名中可能包含的非拉丁文字符。最近,在一个项目中,我们遇到了一个与 Amazon S3 服务相关的挑战,涉及到文件名编码的处理。当从 S3 下载文件…

Redis分布式部署方式-主从复制

分布式部署Redis方式 分布式系统,涉及到一个非常关键的问题:单点问题 单点问题:如果某个服务器,只有一个节点(只搞一个物理服务器,来部署这个服务器程序),会遇到一些困难&#xff…

多线程学习之ThreadLocal详细笔记

ThreadLocal详细笔记 一、ThreadLocal的基本概念二、ThreadLocal的独特性2.1 数据访问方式2.2 线程安全实现2.3 适用场景 三、ThreadLocal 的简单使用四、ThreadLocal 的工作原理五、ThreadLocal和内存泄漏的关系5.1 ThreadLocalMap的Entry的Key设计成弱引用5.2 弱引用会导致内…

超简单4行代码-STM32F103的HAL实现有源蜂鸣器报警

1、概述 在嵌入式项目开发中,使用蜂鸣器作为简单的报警或提示装置非常常见。根据不同的应用场景,我们可能会选择有源蜂鸣器或无源蜂鸣器。本文将重点介绍如何通过STM32F103系列单片机,利用HAL库,仅通过4行代码实现对有源蜂鸣器的…

django学习入门系列之第九点《初识MySQL》

文章目录 9.1 初识网站9.2 初识MySQL下载安装创建配置文件初始化启动MySQL服务进入mysql查看已有文件夹退出(关闭连接)忘记密码 往期回顾 9.1 初识网站 Python相关:基础、函数、数据类型、面向、模块。前端开发直观:HTML、CSS、JavaScript、jQuery:[静态…

【运维】JetBrains Gateway (Pycharm) SSH免密连接,改为免密连接

一直要求输入密码,很烦人: 如何免密连接? 1 重新打开gateway,来到这个界面点新建连接: 2 点这里设置: 3 在这一页,你可以改你的所有配置,只要设置为password并且保存密码&…

详解Redis 高可用的方式 Redis Cluster

Redis 高可用方式 Redis 提供了多种高可用性方案,主要包括以下几种方式: 主从复制(Replication) 主从复制是最基本的高可用性方案,通过将数据从一个主节点复制到多个从节点来实现数据的冗余和读写分离。主节点负责所…

数据结构--数据结构概述

一、数据结构三要素 1. 数据的逻辑结构 数据的逻辑结构是指数据元素之间的关系和组织方式,通常分为线性结构和非线性结构。 线性结构:例如线性表,其中数据元素按照顺序排列,彼此之间存在一对一的关系。 非线性结构:…

android车载手机互联投屏新专题-实战作业布置

背景: 学习了马哥的投屏实战开发课程后,大家都可以实现如下图一样的手机车机多端互联的投屏场景。 即已经实现了手机和车机投屏互动,车机上手机画面屏幕可以与手机实体屏幕一样就是常见的Mirror模式,如果不一样就是课程里面讲的扩…

解析网络流量管理方案:简化基于云的DNS负载均衡

数字化时代,网络规模和流量需求的增长,催生了用户对可用性的需求、管理员对更好的访问和管理等需求。在大型的网络应用中,为保障站点的稳定性,会为服务或站点提供多台服务器,以平均分配每台服务器上的压力,…

上门做饭小程序项目源码功能介绍

上门做饭小程序通常包含以下功能,以便用户方便地享受到上门做饭的服务: 用户注册与登录:允许用户创建账户并登录,管理个人信息和偏好。 菜品浏览与选择:提供各种菜品的列表或菜单,用户可以浏览菜品详情、价…