JavaFX:使LocalDateTime触发事件?

问题描述 投票:0回答:1

我想自动化在线游戏。虽然它只是基于终端的,但它仍然有用。但我想添加一个JavaFX UI,现在我不知道在到达某个LocalDateTime之前将Thread.waits放在哪里。 JavaFX在哪里等待它的事件(如按钮点击,......),我可以覆盖该方法吗?或者有没有办法为javaFX创建自定义LocalDateTime事件和侦听器?

如果我在initialize()中添加一个Thread.wait,则在达到某个LocalDateTime之前不会出现整个场景。

java events javafx action localdate
1个回答
2
投票

如果您希望在某个预定时刻触发事件,但您希望应用程序的用户界面保持对用户操作的响应,那么您需要一个后台线程。您几乎不应该睡眠应用程序的GUI线程,因为这会使您的应用程序无响应并且似乎崩溃了。为了好玩,请以错误的方式尝试:Drop a Thread.sleep call进入您的GUI代码,看看它如何暂时冻结您的应用程序。

了解concurrency。从Oracle Tutorial开始,继续努力,最终每年阅读Java Concurrency in Practice等人的圣经Goetz

构建Executors框架是为了使线程更容易。具体来说,你会想要ScheduledExecutorService类。 Stack Overflow上已经多次介绍过这个问题。搜索以了解更多信息。

并了解如何properly interact with the GUI thread from a background thread

永远不要使用LocalDateTime来跟踪片刻,如课程文档中所述。暂时使用InstantOffsetDateTimeZonedDateTime。对于小时 - 分钟 - 秒的时间跨度,使用DurationDuration类提供诸如toMinutestoSeconds之类的方法,其结果可以作为your delay提供给ScheduledExecutorService。 Stack Overflow上已经多次覆盖了所有这些类。搜索以了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.