Java语言程序设计基础篇_编程练习题*16.21(秒表倒计时)

news2024/9/21 20:32:58

目录

题目:*16.21(秒表倒计时)

习题思路

代码示例

 结果展示


题目:*16.21(秒表倒计时)

  编写一个程序,允许用户在文本域中以秒为单位输入时间,然后按下Enter键来进行倒计时,如图16-45d所示。余下的秒数每秒重新显示一次。当倒计时结束时,程序开始播放音乐。

  • 习题思路

  1. 创建一个BorderPane,创建一个私有TextField设置在BorderPane的中心。
  2. 为TextField注册键盘事件监听器,当Enter键被按下时,获取输入的内容,Play开始动画。
  3. 设置一个私有类型的Timeline动画,每隔1000毫秒(1秒)调用一次设置文本方法
  4. (设置文本方法)每调用方法一次,text中的秒数就减去1,直到0为止,设置一个新的文本表示音乐开始。
  • 代码示例

编程练习题16_21Countdown.java 

package chapter_16;

import java.io.File;

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Duration;

public class 编程练习题16_21Countdown extends Application{
	private MediaPlayer mediaPlayer;
	private Timeline timerAnimation;
	private TextField textField = new TextField();
	private int time;
	@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;  
         }  
		mediaPlayer = new MediaPlayer(new Media(mediaURL));
		textField.setPrefHeight(60);
		textField.setAlignment(Pos.CENTER);
		textField.setFont(new Font("华文细黑", 48));
		BorderPane borderPane = new BorderPane(textField);
		
		textField.setOnKeyPressed(e ->{
			if(e.getCode() == KeyCode.ENTER) {
				time = Integer.valueOf(textField.getText())-1;
				timerAnimation.play();
				textField.setEditable(false);
			}
		});
		
		EventHandler<ActionEvent> eventHandler = e -> {
			setText();
		};
		timerAnimation = new Timeline(new KeyFrame(Duration.millis(1000), eventHandler));
        timerAnimation.setCycleCount(Timeline.INDEFINITE);
        
		
		Scene scene = new Scene(borderPane,350, 150);
		primaryStage.setTitle("编程练习题16_21Countdown");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
	public void setText() {
		if(time == -1) {
			timerAnimation.stop();
			textField.setText("Play Music");
			mediaPlayer.play();
		}
		else textField.setText(time--+"");
	}
}
  •  结果展示

纯音乐Peter Jeremias - Coming Home.mp3

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

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

相关文章

剪映新手必看!剪映如何实现图片/视频在文字上显示(剪映如何实现图片/视频轨道在文字轨道之上显示/剪映如何实现自由轨道/层级)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 剪映 📒📝 解决方案⚓️ 相关链接 ⚓️📖 介绍 📖 剪映,这款广受好评的视频编辑应用,以其用户友好的界面和强大的功能,成为了许多视频创作者的首选。抱着好奇心,今天我也试用了一下,但在使用过程中,我遇到了一个问…

AI for reading ML paper

心流 心流 Kimi Kimi Humata Humata Bytez Bytez Chatgpt4 scholar 学术版chatgpt4&#xff0c;需要充值&#xff1b; 还有更多AI工具等待你发现&#xff1b;

LVS的NAT模式实战

目录 1.NAT模式的工作原理 2.NAT模式实战---环境准备 1.环境规划 2.克隆主机&#xff0c;生成nat模式的机器 1.设置主机名称 2.更改ip地址 3.添加网卡 4.查看网卡 5.修改网卡配置文件 6.时间同步 7.停用其他服务 8.添加web服务 1.安装nginx 2.修改index.html文件 …

NFS实现多服务器文件的共享

文章目录 一、简介二、部署1、准备1、服务端和客户端&#xff1a;安装nfs-utils2、服务端&#xff1a;创建共享目录3、服务端&#xff1a;配置exports文件4、客户端挂载5、客户端&#xff1a;卸载 三、附录1、NFS服务基本命令2、/etc/exports参数解释3、exportfs命令 参考资料 …

Mysql-B树和B+树的区别

当我们为ID去建立一个主键索引的时候&#xff0c;Mysql底层就会为我们去维护一棵树的结构&#xff0c;从而提升我们的数据检索效率&#xff0c;树的共同特性&#xff1a;小的索引在左边&#xff0c;大的索引在右边&#xff0c;每一次结点的寻址&#xff0c;都是一次磁盘的IO&am…

STM32 F103C8T6学习笔记19:定时器读取旋转编码器

今日学习STM32 F103C8T6 单片机驱动读取旋转编码器&#xff0c;并传输数据给串口&#xff1a; 文章提供测试代码讲解、完整工程下载、测试效果图 目录 旋转编码器&#xff1a; 输入捕获&#xff1a; 硬件连接&#xff1a; 代码编程&#xff1a; 测试效果视频: 测试工程下载&…

Mybatis(2)

目录 一. 参数传递 1. 单个参数 2. 多个参数 二. mybatis增删改 1. 新增 2. 删除 3. 修改 三. mybatis查询 1. 单张表查询 2. 多表查询 2.1 查询单个学生信息 2.2 mybatis自动映射级别 2.3 查询所有学生信息 3. 嵌套查询 3.1 查询单个学生信息 3.2 查询多个学生…

DDColor部署安装,在服务器Ubuntu22.04系统——点动科技

DDColor图片上色项目的部署安装&#xff0c;在服务器Ubuntu22.04系统——点动科技 一、ubuntu22.04基本环境配置1.1 更换清华Ubuntu镜像源1.2 更新包列表&#xff1a;2. 安装英伟达显卡驱动2.1 使用wget在命令行下载驱动包2.2 更新软件列表和安装必要软件、依赖2.2 卸载原有驱动…

24.8.9.11数据结构|链栈和队列

链栈 1、理解 实际上是一个仅在表头进行操作的单链表,头指针指向栈顶结点或头结点,以下恋栈均指带头结点的链栈. 2、 基本操作 1、定义结构&#xff1a;节点含有数据域和指针域 2、初始化操作&#xff1a;建立一个带头结点的空栈 3、取栈顶元素操作&#xff1a;取出栈的栈顶元…

Mybatis_springboot与mybatis-plus

一 Mybatis_springboot MyBatis 是一个流行的持久层框架&#xff0c;可以与 Spring Boot 无缝集成。下面是如何在 Spring Boot 项目中使用 MyBatis 的基本步骤。 1. 创建 Spring Boot 项目 你可以使用 Spring Initializr 创建一个新的 Spring Boot 项目。选择以下依赖项&…

只要15分钟,TiDB国产化数据库快速入门,简单高效

TiDB国产化数据库快速入门 1.TiDB服务部署2.TiDB服务核心组件说明2.1 PD&#xff08;Placement Driver&#xff09;- 交通指挥中心2.2 TiDB&#xff08;SQL Layer&#xff09;- 餐厅前台2.3 TiKV&#xff08;分布式存储层&#xff09;- 仓库存储系统2.4 TiFlash&#xff08;列式…

java数据库连接池介绍与使用

一. 使用数据库连接池有什么优势 在程序开发的过程中如果不使用数据库连接池 , 可能会导致我们每执行一次sql语句 , 就会向数据库发送请求链接与断开 , 这会消耗我们的内存资源 1. 资源重用更佳 减少开销&#xff1a;数据库连接池通过复用现有的数据库连接&#xff0c;显著减…

冒泡,选择,插入,希尔,快速,归并

冒泡&#xff0c;选择&#xff0c;插入&#xff0c;希尔&#xff0c;快速&#xff0c;归并 选择类的排序&#xff1a;选择排序&#xff0c;堆排序 交换类的排序&#xff1a;冒泡&#xff0c;快排 #include <stdio.h> #include<stdbool.h> #include<stdlib.h&…

Hidden Marlov Model(HMM)

一、Model 1、将声学特征设为X&#xff0c;经过语音识别得到的tokens设为Y&#xff0c;目标是找到通过X得到Y的最大概率&#xff0c;可以通过概率公式改变为 分为两个概率 2、将tokens序列Y转化为states序列S&#xff0c;声学特征分得更细 3、从states到声学特征的过程 二、HM…

力扣面试经典算法150题:罗马数字转整数

罗马数字转整数 今天的题目是力扣面试经典150题中的数组的简单题: 罗马数字转整数 题目链接&#xff1a;https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 将一个罗马数字转换成相应的整数。输入是一…

面向未来的低代码开发:人工智能与机器学习的结合

引言 在当今飞速发展的数字化世界中&#xff0c;技术的进步正以前所未有的速度改变着各个行业的运营方式。其中&#xff0c;低代码开发和人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;这两大技术的结合&#xff0c;正在推动着软件开发领域的又一次变…

身份证OCR识别接口如何用Java调用

一、什么是身份证OCR识别接口&#xff1f; 身份证OCR识别接口又叫身份证识别&#xff0c;身份证图像识别&#xff0c;身份证文字识别&#xff0c;即自动识别和提取身份证上的文字和数字信息。它可以通过图像处理和模式识别算法&#xff0c;将身份证中的姓名、性别、民族、出生…

我们从过去一年的大模型构建过程中学到的经验

当下正是使用大型语言模型&#xff08;LLM&#xff09;构建应用的好时机。过去一年&#xff0c;LLM 已经发展到了足够用于实际应用的水平。LLM 的进化速度与社交媒体层出不穷的演示应用&#xff0c;将在 2025 年吸引对 AI 领域的约 2000 亿美元投资。LLM 的门槛也很低&#xff…

Dbeaver 直连数据库下载数据到本地

参考文章&#xff1a;win11中DBeaver超详细下载与数据库MySQL 要使用 DBeaver 直接连接数据库并将数据下载到本地&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 连接到数据库 打开 DBeaver。点击左上角的“Database”菜单&#xff0c;选择“New Database Connection”…

【数学建模】【2024国赛前必看内容】python基础速成教学及常用python代码包

一、内容介绍 Python在各个编程语言中比较适合新手学习&#xff0c;Python解释器易于扩展&#xff0c;可以使用C、C或其他可以通过C调用的语言扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库&#xff0c;提供了适用于各个主要系统…