在JavaFX中强制立即绘制

时间:2009-02-09 14:22:50

标签: javafx

有没有办法在继续之前强制JavaFX应用程序重绘自己?类似于Swing Panel的paint(Graphic g)方法(我可能会在那里得到错误的关键字)。

请考虑以下示例:您编写了一个TicTacToe应用程序以及计算机播放器所需的AI。你希望有能力向两位电脑玩家展示它。也许你在计算机转弯之间暂停了两秒钟,让它具有逼真的效果。当你点击“开始”按钮时,会有一个很大的无响应暂停(9个回合所需的时间,假装计算机的'假定'是假的')然后突然应用程序的视觉效果更新完成游戏的状态。

似乎JavaFX在应用程序线程中的处理完成后重新绘制?我在这里不太确定。

谢谢!

3 个答案:

答案 0 :(得分:6)

你是对的。 JavaFX是事件驱动和单线程的。这意味着不能同时完成重绘和事件响应。长时间运行的任务应该在单独的线程上执行,这样它们就不会阻止UI的呈现。当任务完成后,它可以通过调用FX.deferAction()来同步回FX线程,这将简单地执行主要代码线程。

答案 1 :(得分:1)

这不是最有用的答案,因为我已经玩了半天的JavaFX,但你不会使用时间轴,关键帧和绑定来完成你的重绘而不是像你一样明确地调用它们描述?

请参阅this tutorial for an example

答案 2 :(得分:1)

JavaFX的模型是将您与屏幕上的“东西”绘画分开。这非常强大,但与您熟悉的方式有所不同。

whaley是正确的,在JavaFX中执行此操作的适当方法是创建一个时间轴,每隔X秒完成一次移动,并将在该关键帧处绘制。

如果您对如何执行此操作有疑问,请尝试使用某些代码提出新问题。