21xrx.com
2024-12-26 04:33:25 Thursday
登录
文章检索 我的文章 写文章
JavaFX计时器:如何使用JavaFX创建定时器
2023-06-15 17:23:38 深夜i     --     --
JavaFX 计时器 时间线 关键帧 标签 按钮 控件

JavaFX是Java的一个GUI库,它可以用来开发富客户端应用程序,并拥有多种工具和控件来支持界面设计。其中之一是计时器,它可以用来计算时间和计时任务。本文将介绍如何使用JavaFX创建计时器。

首先,要使用计时器,你需要导入JavaFX的库,并创建一个计时器类。计时器类有一个时间线(Timeline),它将计时器类的运行与界面的更新相结合。时间线中的核心是一个关键帧(KeyFrame),它用于表示时间线的动画状态。在这个例子中,我们将使用关键帧来更新一个标签(Label)的文本。

接下来,请看以下代码:


import javafx.animation.KeyFrame;

import javafx.animation.Timeline;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.scene.control.Label;

import javafx.util.Duration;

public class Timer {

  private Timeline timeline;

  private Label label;

  private int seconds = 0;

  public Timer(Label label) {

    this.label = label;

    timeline = new Timeline();

    timeline.setCycleCount(Timeline.INDEFINITE);

    timeline.getKeyFrames().add(new KeyFrame(Duration.seconds(1),

      new EventHandler () {

        @Override

        public void handle(ActionEvent event) {

          seconds++;

          label.setText("Time: " + seconds);

        }

      }));

  }

  public void start() {

    timeline.playFromStart();

  }

  public void stop() {

    timeline.stop();

  }

}

在这个类中,我们定义了一个计时器类,它有一个标签作为参数。在构造函数中,我们创建了一个时间线,并将它设置为无限循环。我们还定义了一个“秒”计数器,它将被更新每一秒钟。时间线中的关键帧被设置为每一秒,它包含了更新标签文本的事件。当计时器启动时,就会开始运行时间线;当停止时,时间线也会停止。

现在,我们可以在JavaFX应用程序中使用计时器了。首先,让我们创建一个JavaFX应用程序,它有一个按钮和一个标签,按钮可以启动和停止计时器。请看以下代码:


import javafx.application.Application;

import javafx.geometry.Insets;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.Label;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class App extends Application {

  private Timer timer;

  @Override

  public void start(Stage primaryStage) {

    Label label = new Label("Time: 0");

    Button start = new Button("Start");

    start.setOnAction(e -> timer.start());

    Button stop = new Button("Stop");

    stop.setOnAction(e -> timer.stop());

    VBox root = new VBox(10, label, start, stop);

    root.setPadding(new Insets(10));

    Scene scene = new Scene(root, 200, 150);

    primaryStage.setScene(scene);

    primaryStage.show();

    timer = new Timer(label);

  }

  public static void main(String[] args) {

    launch(args);

  }

}

在这个应用程序中,我们创建了一个标签和两个按钮。按钮分别绑定了启动和停止计时器的事件。我们还创建了一个垂直的Box布局来放置这些控件。最后,我们启动了应用程序,并创建了一个计时器对象,将其绑定到标签上。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复