代码之家  ›  专栏  ›  技术社区  ›  Urs Reupke

如何使MigLayout 4.2与JavaFX 8协作?

  •  3
  • Urs Reupke  · 技术社区  · 10 年前

    试图将我的应用程序更新到Java8,我发现JavaFXUI变得不可用。整个屏幕都存在严重的验证和重新绘制问题,我怀疑MigLayout(4.2)是罪魁祸首,因为其他人似乎也受到了影响: https://code.google.com/p/miglayout/issues/detail?id=6

    我在github上提供了这个问题的运行示例: https://github.com/UrsKR/miglayout-repaint

    它说明了在计算初始布局后将节点添加到MigPane时会触发该问题。

    如何让他们两个像Java 7/JavaFX 2那样协作? JavaFX 8中布局的行为方式是否有任何记录在案的变化?

    编辑:我已经报告了相应的 bug to JavaFX ,他们将其作为回归进行归档。 也许没有办法让这种行为正确。

    1 回复  |  直到 10 年前
        1
  •  5
  •   Urs Reupke    10 年前

    与MigLayout和JavaFX的开发人员交谈时,我发现没有办法让JavaFX8和MigLayout4.2合作。

    目前,解决方案是将MigLayout更新为5.0-SNAPSHOT Sonatype's Snapshot repo .

    据我所知,这是因为JavaFX8在每个脉冲中只触发一次布局,而不是像JavaFX2那样多次触发。
    MigLayout 4.2存在验证问题,在某些情况下,它更新了屏幕而不进行更新,尽管其布局网格无效。
    由于每个脉冲多次触发布局,验证(在布局过程中稍后发生)被用于后续布局过程,从而正确呈现布局。
    通过切换到每脉冲一次的行为,JavaFX 8在MigLayout中暴露了这个问题,并通过在每次布局传递之前验证布局来解决这个问题。