21xrx.com
2025-06-13 03:07:58 Friday
文章检索 我的文章 写文章
JavaFX计时器:如何使用JavaFX创建定时器
2023-06-15 17:23:38 深夜i     47     0
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布局来放置这些控件。最后,我们启动了应用程序,并创建了一个计时器对象,将其绑定到标签上。

  
  

评论区

    相似文章