首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当系统日期/时间更改为过去的一天/时间时,JavaFX会冻结

当系统日期/时间更改为过去的一天/时间时,JavaFX会冻结
EN

Stack Overflow用户
提问于 2018-07-12 08:02:01
回答 2查看 471关注 0票数 5

我有个奇怪的问题。我启动了我的JavaFX程序,它绘制对象(矩形、圆圈等)。在屏幕上使用通过套接字发送的命令。当向后更改系统时钟时(例如在11:00它在9:00改变),JavaFX不显示执行命令的结果(即创建的对象),后台的程序逻辑工作并在控制台中打印接收和执行的命令的消息,但是屏幕上没有显示任何内容。时间由命令改变:

代码语言:javascript
复制
sudo date --set 'time' && sudo hwclock --systohc

操作系统是Ubuntu16.04.4LTS,内核版本为3.4.39.s5p4418。这个操作系统工作在Smart4418模块上。

uname -a输出:

Linux4418Module 3.4.39-s5p4418 #1 SMP抢占星期五8月18日14:06:20 HKT 2017 armv7l GNU/Linux

Java版本:

java版本"1.8.0_171“ Java(TM) SE运行时环境(build 1.8.0_171-b11) Java HotSpot(TM)客户端VM (build 25.171-b11,混合模式)

我使用JavaFX嵌入式SDK是从胶子网站下载的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-19 07:55:59

Monocle.java in jfxrt.jar使用java/util/Timer.java( the 1.8)来管理屏幕。

方法"MainLoop“在TimerThread(JDK1.8)中使用”系统时间“计算执行时间。

如果“系统时间”倒退,这个TimerThread就会冻结。

我通过修改Monocle.java来调用修改过的Timer.java,并在jfxrt.jar中更新它们来修正它。

票数 7
EN

Stack Overflow用户

发布于 2019-10-17 10:34:29

在花了大量时间搜索解决方案之后,我找到了一个解决方案(我在RPi3上的Raspbian /Buster上遇到了问题,在Windows 10上一切都很好)。我在我的组件中添加了“假”动画(可以隐藏),现在UI在更改系统时间时不会冻结。只有在我找到更好的解决办法之前,这才是解决办法。

代码语言:javascript
复制
final Rotate fakeRotate = new Rotate();
    backButton.getTransforms().add(fakeRotate);

    fakeAnimation = new Timeline(
            new KeyFrame(
                    Duration.hours(24),
                    new KeyValue(
                            fakeRotate.angleProperty(),
                            0.1,
                            Interpolator.LINEAR
                    )
            )
    );

    fakeAnimation.setCycleCount(Animation.INDEFINITE);
    fakeAnimation.play();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51300293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档