JavaFX 在界面上显示实时时间

本文介绍如何在JavaFX应用程序中使用Timeline和EventHandler显示实时更新的时间。通过创建一个继承自Application的类,并在start方法内设置Label,使用SimpleDateFormat格式化时间,结合Timeline每秒刷新一次来实现实时时间显示。这种方法对于构建动态用户界面非常有用。
摘要由CSDN通过智能技术生成

JavaFX 在界面上显示实时时间

怎样在javaFX界面是上显示实时时间?

以下是我将时间显示在标签(Label)上的案例
在这里插入图片描述

  1. 首先,创建类继承Applcation并实现start方法
public class 类名 extends Application{
    @Override
    public void start(Stage primaryStage) throws Exception {

    
}
  1. 在start方法内完成

    在这里插入图片描述

//设置实时时间
        Label time = new Label();		//设置标签
        time.setFont(new Font(20));		//设置标签字体
        DateFormat currentTime = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");	//设置时间格式

        EventHandler<ActionEvent> eventHandler = e->{
            time.setText(currentTime.format(new Date()));
            System.out.println(currentTime.format(new Date()));
        };

        Timeline animation = new Timeline(new KeyFrame(Duration.millis(1000), 		(javafx.event.EventHandler<ActionEvent>) eventHandler));				//一秒刷新一次
        animation.setCycleCount(Timeline.INDEFINITE);
        animation.play();
  1. 将标签添加到面板上
	pane.getChildren.add(time);

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在JavaFX界面上呈现流动小河的动图,可以使用JavaFX的动画类来实现。具体步骤如下: 1.准备流动小河的动图素材,可以是一组连续的图片,或者是一个动画文件如GIF。 2.在JavaFX界面上添加一个ImageView组件,用于显示动图。 3.使用JavaFX的Timeline类创建一个时间轴动画,设置动画的时间间隔和每一帧显示的图片。 4.将动画添加到ImageView组件中,启动动画即可在界面上呈现出流动小河的动图。 以下是一个简单的JavaFX代码示例,展示如何实现流动小河的动图: ``` java import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.application.Application; import javafx.geometry.Rectangle2D; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.Pane; import javafx.stage.Stage; import javafx.util.Duration; public class RiverAnimation extends Application { private static final int WIDTH = 800; private static final int HEIGHT = 600; private static final int FRAME_COUNT = 8; private static final int FRAME_WIDTH = 200; private static final int FRAME_HEIGHT = 150; private static final int ANIMATION_DURATION = 1000; private static final String IMAGE_URL = "river.gif"; @Override public void start(Stage primaryStage) { Pane root = new Pane(); ImageView imageView = new ImageView(new Image(IMAGE_URL)); imageView.setViewport(new Rectangle2D(0, 0, FRAME_WIDTH, FRAME_HEIGHT)); Timeline animation = new Timeline( new KeyFrame(Duration.millis(ANIMATION_DURATION / FRAME_COUNT), event -> { int index = (int) (event.getTickTime() / ANIMATION_DURATION * FRAME_COUNT); int x = (index % (FRAME_WIDTH / FRAME_HEIGHT)) * FRAME_WIDTH; int y = (index / (FRAME_WIDTH / FRAME_HEIGHT)) * FRAME_HEIGHT; imageView.setViewport(new Rectangle2D(x, y, FRAME_WIDTH, FRAME_HEIGHT)); }) ); animation.setCycleCount(Animation.INDEFINITE); animation.play(); root.getChildren().add(imageView); Scene scene = new Scene(root, WIDTH, HEIGHT); primaryStage.setScene(scene); primaryStage.setTitle("River Animation"); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 在这个例子中,我们使用了一个GIF动画文件作为流动小河的动图素材,每一帧的大小为200x150,共有8帧。我们将ImageView组件的视口设置为第一帧,然后使用Timeline类创建一个时间轴动画,每1000ms切换一帧,直到播放完所有8帧,然后循环播放。最后将ImageView组件添加到Pane中,创建一个Scene并显示到主窗口中即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让线程再跑一会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值