Как заменить метод StageHelper.getStages () с Java 1.7 на Java 11 - PullRequest
1 голос
/ 08 октября 2019

Я мигрирую приложение, которое использует JavaFX от Java 1.7 до Java 11. Одна из ошибок, которую я имею, о методе StageHelper.getStages(), который исчез. Я не нашел ничего, чтобы заменить это. У вас есть решение заменить этот метод? Спасибо за помощь ! :)

1 Ответ

4 голосов
/ 08 октября 2019

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: Очистить Stage и StageHelper .

Если вы прочиталиописание, как часть проблемы, они будут:

Удалить getStages() и заставить вызывающего этого метода использовать открытый API Window.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());
...