当前位置: 首页 > wzjs >正文

装饰网站建设运营河北外贸网站建设

装饰网站建设运营,河北外贸网站建设,wordpress语音朗读,wordpress留言板自定义javaFX实现倒计时 核心概念 Timeline: Timeline 是JavaFX动画API的核心类,用于创建动画。它可以按照指定的时间间隔(Duration)触发事件(KeyFrame)。 可以将其视为一个定时器,每隔一段时间执行一些操作。 …

javaFX实现倒计时

核心概念

  1. Timeline:

    • Timeline 是JavaFX动画API的核心类,用于创建动画。它可以按照指定的时间间隔(Duration)触发事件(KeyFrame)。

    • 可以将其视为一个定时器,每隔一段时间执行一些操作。

  2. KeyFrame:

    • KeyFrame 定义了在特定的时间点要执行的操作。它包含一个 Duration 和一个 EventHandler<ActionEvent>

    • Duration 指定了从 Timeline 开始到 KeyFrame 执行的时间。

    • EventHandler<ActionEvent> 定义了在该时间点要执行的代码。

  3. Duration:

    • Duration 类用于指定时间间隔。可以指定为秒(seconds)、毫秒(millis)、纳秒(nanos)等。

  4. Label:

    • Label 用于显示倒计时的时间。可以通过 setText() 方法更新 Label 的文本内容。

  5. JavaFX Application Thread:

    • 在JavaFX应用程序中,所有的UI更新都必须在JavaFX Application Thread中进行。可以使用 Platform.runLater() 方法将代码提交到JavaFX Application Thread中执行。

代码实现 

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Duration;import java.time.LocalTime;
import java.time.format.DateTimeFormatter;public class CountdownApp extends Application {private static final int DEFAULT_SECONDS = 60; // 默认倒计时时长,单位秒private Label countdownLabel;private Timeline timeline;private int remainingSeconds = DEFAULT_SECONDS;private Button startButton;private Button stopButton;@Overridepublic void start(Stage primaryStage) {countdownLabel = new Label(formatTime(remainingSeconds));countdownLabel.setStyle("-fx-font-size: 48px;");startButton = new Button("Start");stopButton = new Button("Stop");stopButton.setDisable(true); // 初始状态禁用停止按钮startButton.setOnAction(event -> startCountdown());stopButton.setOnAction(event -> stopCountdown());VBox root = new VBox(10, countdownLabel, startButton, stopButton);root.setAlignment(Pos.CENTER);root.setPadding(new Insets(20));Scene scene = new Scene(root, 400, 300);primaryStage.setTitle("Countdown Timer");primaryStage.setScene(scene);primaryStage.show();}private void startCountdown() {startButton.setDisable(true);  // 禁用启动按钮stopButton.setDisable(false); // 启用停止按钮timeline = new Timeline(new KeyFrame(Duration.seconds(1), event -> {if (remainingSeconds > 0) {remainingSeconds--;Platform.runLater(() -> countdownLabel.setText(formatTime(remainingSeconds))); // 必须在fx线程更新UI} else {stopCountdown();Platform.runLater(() -> countdownLabel.setText("Time's up!")); // 时间到,显示 Time's up!}}));timeline.setCycleCount(remainingSeconds); // 倒计时指定次数timeline.setOnFinished(event -> {  //倒计时完成stopButton.setDisable(true);startButton.setDisable(false);});timeline.play();}private void stopCountdown() {if (timeline != null) {timeline.stop();}stopButton.setDisable(true);startButton.setDisable(false);remainingSeconds = DEFAULT_SECONDS;Platform.runLater(() -> countdownLabel.setText(formatTime(remainingSeconds)));}private String formatTime(int seconds) {LocalTime time = LocalTime.ofSecondOfDay(seconds);DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); // 格式化为 时:分:秒return time.format(formatter);}public static void main(String[] args) {launch(args);}
}

 代码解释

  • DEFAULT_SECONDS:定义默认的倒计时秒数。

  • countdownLabel:用于显示倒计时的标签。

  • timelineTimeline 对象,用于定时触发事件。

  • remainingSeconds:存储剩余秒数的整数变量。

  • startButton & stopButton: 启动/停止 倒计时按钮

  • startCountdown 方法

    • startButton.setDisable(true) & stopButton.setDisable(false):启动时启动按钮禁用,停止按钮启用

    • KeyFrame中的实现:判断 remainingSeconds > 0,否则停止倒计时,更新UI

    • timeline.setCycleCount(remainingSeconds):设置 Timeline 循环指定次数,次数等于remainingSeconds

    • timeline.setOnFinished(event -> {...}): 设置倒计时结束后的处理,例如启用/禁用 按钮

    • Platform.runLater(() -> countdownLabel.setText(...)) 使用Platform.runLater 更新UI。

  • stopCountdown 方法

    • 停止 timeline, 重置UI,重置remainingSeconds


文章转载自:

http://suSk60AV.cLxpp.cn
http://sDtvA5uo.cLxpp.cn
http://BH3Y4337.cLxpp.cn
http://XNRLlYrx.cLxpp.cn
http://YqPQhkCy.cLxpp.cn
http://HlvdVa3m.cLxpp.cn
http://TZk6ZBIx.cLxpp.cn
http://lHY6FJB8.cLxpp.cn
http://WuusLGeG.cLxpp.cn
http://bIqt7c9J.cLxpp.cn
http://fMdy26Ee.cLxpp.cn
http://iDAEFN03.cLxpp.cn
http://X2XMkP4f.cLxpp.cn
http://CaOHrgUR.cLxpp.cn
http://Wtu8wWIT.cLxpp.cn
http://SGggdyD0.cLxpp.cn
http://oLSOHTcq.cLxpp.cn
http://nL9f9Abh.cLxpp.cn
http://lbO51rv9.cLxpp.cn
http://4oX9nYjo.cLxpp.cn
http://wakEMPT5.cLxpp.cn
http://iSw2uJ4N.cLxpp.cn
http://qEvZRQ5p.cLxpp.cn
http://Eupl9Qan.cLxpp.cn
http://38dqIRgS.cLxpp.cn
http://qVCZ1e3Z.cLxpp.cn
http://opti6Nrw.cLxpp.cn
http://qs5rKXCZ.cLxpp.cn
http://ean5hHgd.cLxpp.cn
http://GnOXX47R.cLxpp.cn
http://www.dtcms.com/wzjs/625463.html

相关文章:

  • 网页商城设计商城网站设计案例珠海建设局网站首页
  • 电子商务网站的建设与维护方法怎么制作一个网站及小程序
  • 网站建设社团活动宗旨网站logo制作教程
  • 免费网站建设可信吗国家icp备案查询系统
  • 小学学校网站建设计划网络游戏陪玩
  • 公司网站建设的签订合同网站在哪里
  • 网站建设后需要维护吗三室一厅装修效果图
  • 东莞建设培训中心网站比较厉害的网站制作公司
  • 架设仿冒网站挂马饰品电子商务网站的建设
  • 长沙网上商城网站建设方案提供秦皇岛网站建设
  • 自己做的网站响应速度慢帝国做网站的步骤
  • 建设网站需要什么内容金华开发区人才网
  • 做喷绘可以在那个网站找外贸新手怎样用谷歌找客户
  • 网站的设计方法有哪些内容网站定制合同
  • 网站做影集安全吗网站建设公司利润
  • asp.net网站开发试题网站之间如何交换友情链接
  • 华大 网站建设郑东新区建设局网站
  • 万网发布网站做小程序商城
  • 还能用的wap网站后台查看网站容量
  • 昆山专业的网站建设哪些网站是做货源的
  • 网站建设与营销有没有做的很炫的科技型网站
  • 企业开展网站建设网站定制设计制作公司
  • 江西省城乡建设培训网官方网站百度网站名称
  • 购物网站怎么做项目简介wordpress为什么被
  • 网站刷流量会怎么样开发网站的基本流程五个阶段
  • 公司门户网站模板网站建立多少钱
  • 深圳网站建设哪家最好小程序登录网址
  • 大一学生做的网站哪个网站可以做代练
  • 一个网站大概多少页面网站建设的竞争对手的分析
  • 网站建设宣传方案建站优化公司