如何将方法 StageHelper.getStages() 从 java 1.7 替换为 java 11
How to replace the methode StageHelper.getStages() from java 1.7 to java 11
我正在将使用 JavaFX
的应用程序从 Java 1.7
迁移到 Java 11
。
我遇到的错误之一是关于 StageHelper.getStages()
方法,它已经消失了。
我没有找到任何东西来代替它。您有替代此方法的解决方案吗?
谢谢您的帮助 ! :)
StageHelper
一直是私有 API,因为它是 com.sun.javafx.stage
的一部分。因此,您应该知道私有 API 可以随时更改或删除,恕不另行通知。
对于Java 1.7我不能说,JavaFX(2.2?)当时没有开源。
对于Java1.8,StageHelper.getStages()
方法可以找到here.
然而,对于 Java 1.9,定义 here 的 StageHelper
不再包括 getStages
。
可以在本期中找到原因 JDK-8156170: Clean up Stage and StageHelper。
如果您阅读描述,作为问题的一部分,他们将:
Remove getStages()
and make caller of this method to use public API Window.getWindows()
.
备选方案
正如那个问题中提到的那样,自从 JavaFX 9 你有了这个 public 方法 Window.getWindows()
,那将
return a list containing a reference to the currently showing JavaFX windows
请注意,Window
可以是 Stage
或 PopupWindow
,因此也许您可以将它们过滤掉:
List<Stage> stages = Window.getWindows().stream()
.filter(Stage.class::isInstance)
.map(Stage.class::cast)
.collect(Collectors.toList());
我正在将使用 JavaFX
的应用程序从 Java 1.7
迁移到 Java 11
。
我遇到的错误之一是关于 StageHelper.getStages()
方法,它已经消失了。
我没有找到任何东西来代替它。您有替代此方法的解决方案吗?
谢谢您的帮助 ! :)
StageHelper
一直是私有 API,因为它是 com.sun.javafx.stage
的一部分。因此,您应该知道私有 API 可以随时更改或删除,恕不另行通知。
对于Java 1.7我不能说,JavaFX(2.2?)当时没有开源。
对于Java1.8,StageHelper.getStages()
方法可以找到here.
然而,对于 Java 1.9,定义 here 的 StageHelper
不再包括 getStages
。
可以在本期中找到原因 JDK-8156170: Clean up Stage and StageHelper。
如果您阅读描述,作为问题的一部分,他们将:
Remove
getStages()
and make caller of this method to use public APIWindow.getWindows()
.
备选方案
正如那个问题中提到的那样,自从 JavaFX 9 你有了这个 public 方法 Window.getWindows()
,那将
return a list containing a reference to the currently showing JavaFX windows
请注意,Window
可以是 Stage
或 PopupWindow
,因此也许您可以将它们过滤掉:
List<Stage> stages = Window.getWindows().stream()
.filter(Stage.class::isInstance)
.map(Stage.class::cast)
.collect(Collectors.toList());