JavaFX:是否使LocalDateTime触发事件?

时间:2019-04-20 18:24:27

标签: java events javafx action localdate

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

如果我在initialize()中添加Thread.wait,直到达到特定的LocalDateTime时,整个场景才会出现。

1 个答案:

答案 0 :(得分:2)

如果您希望在某个预定时刻触发事件,但是希望应用程序的用户界面对用户的操作保持响应,则需要一个后台线程。您几乎应该永远不要休眠应用程序的GUI线程,因为这会使您的应用程序无响应,并且似乎已崩溃。为了娱乐,请尝试使用错误的方法:将Drop a Thread.sleep call插入GUI代码以查看其如何暂时冻结应用程序。

了解有关concurrency的信息。从Oracle Tutorial开始,一直到Java Concurrency in Practice等人Goetz每年都要逐步阅读圣经。

Executors框架旨在简化线程。具体来说,您将需要ScheduledExecutorService类。堆栈溢出已经对此进行了很多次讨论。搜索以了解更多信息。

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

如类文档中所述,切勿使用LocalDateTime来跟踪时刻。请暂时使用InstantOffsetDateTimeZonedDateTime。对于小时-分钟-秒的时间跨度,请使用DurationDuration类提供诸如toMinutestoSeconds之类的方法,您可以将其结果作为your delay馈送到ScheduledExecutorService。所有这些类在Stack Overflow上已经讨论了很多次。搜索以了解更多信息。