【问题标题】:Preload a JavaFX stage before show()在 show() 之前预加载 JavaFX 阶段
【发布时间】:2014-06-06 05:36:59
【问题描述】:

在 JavaFX 中,我使用 stage1.hide(); 从一个阶段切换到另一个阶段; stage2.show();

然而,stage2 相当大,包含一大堆元素。所以当我 show() 它第一次弹出时,有一个 400 毫秒的时间段,整个舞台是空的和灰色的。然后所有元素都出现了。

太丑了。这是在具有非常好的 GPU 的 i7 上。

我注意到,如果我先显示它,然后隐藏它,然后再显示它,最终的节目会从它出现在屏幕上的那一刻起看起来很完美。但是,当我第一次 hide() 然后 show() 舞台时会闪烁,所以这不起作用。

是否有可能实现我在上一段中描述的内容,而不必事先让舞台出现在屏幕上?

这是在带有新 Modena 主题的 Java 8u5 上。值得注意的是,JavaFX 2.2 不存在此问题。

谢谢!

【问题讨论】:

  • 您可能在 FX 线程上做了太多事情 - 您不能在单独的线程上卸载一些构造吗?
  • 奇怪的是,这在一个 JavaFX 版本中会成为问题,而在另一个版本中则不会。 mcve 可能吗?它对latest development version 更有效吗?你使用 FXML 还是 3D?
  • @assylias 这是一个有趣的想法,我会尝试并报告。也就是说,我当前的代码目前所做的是:“做一些处理”(jfx 线程),然后是 show()。所以我不确定在演出前卸载处理会有什么影响。
  • @jewelsea 正在下载并尝试 ldv,将反馈。根本没有3D。 MCVE 可能是不可能的,因为我不知道是什么真正导致了这个问题——除了我预感他们同时在舞台上出现了太多的元素。我会试验的!
  • YEEEEEEEASSS!我更新到 8u20 b17 并且 boom 问题消失了。没有那个可怕的灰屏,舞台加载要好得多。它甚至打开得更快。如果您想在下面发布它作为答案,我可以投票/接受等。谢谢您 Jewelsea!

标签: java javafx javafx-8


【解决方案1】:

此问题的根本原因是早期 Java 8 版本中引入的性能回归。将 Java 8 版本更新为 latest development version,修复了该问题(如原始发布者所报告)。

更新后,用户不再体验:“400毫秒的时间,整个舞台是空的和灰色的”。因此,不再需要“在 show() 之前预加载 JavaFX 阶段”问题中的原始请求,因为性能很好,无需任何预加载调整。

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多