我正在将使用JavaFX
的应用程序从Java 1.7
迁移到Java 11
。 我遇到的错误之一是关于方法StageHelper.getStages()
已经消失。 我没有找到任何可以替代它的东西。你有解决方案来取代这种方法吗? 感谢您的帮助!:)
StageHelper
一直是私有API,因为它是com.sun.javafx.stage
的一部分。因此,您应该知道,私有 API 可以随时更改或删除,恕不另行通知。
对于Java 1.7,我不能说JavaFX(2.2?(当时不是开源的。
对于 Java 1.8,可以在此处找到StageHelper.getStages()
方法。
然而,对于Java 1.9,此处定义的StageHelper
不再包含getStages
。
原因可以在此问题JDK-8156170:清理阶段和阶段帮助程序中找到。
如果您阅读说明,作为问题的一部分,他们将:
删除
getStages()
并使此方法的调用方使用公共 APIWindow.getWindows()
。
选择
如该问题所述,由于JavaFX 9具有此公共方法Window.getWindows()
,这将
返回一个列表,其中包含对当前显示的 JavaFX 窗口的引用
请注意,Window
可以是Stage
或PopupWindow
,所以也许你可以过滤掉它们:
List<Stage> stages = Window.getWindows().stream()
.filter(Stage.class::isInstance)
.map(Stage.class::cast)
.collect(Collectors.toList());