Как установить несколько таблиц стилей CSS по умолчанию для приложения с JavaFX 9 (замена для StyleManager)?

Чья это, черт возьми, идея исключить StyleManager без прямой и явной замены - как я вижу, он сломал многие программы!

Мне нужно сделать рестайлинг для всего приложения (пользовательские компоненты, пользовательские псевдоклассы, пользовательские патчи для конкретной платформы и т. Д.). В JavaFX 8 я мог бы использовать: com.sun.javafx.css.StyleManager.getInstance().addUserAgentStylesheet("MyShit.css");

Но в Java 9 StyleManager недоступен. Так есть ли способ установить CSS для каждой сцены?

Использование "Application.setUserAgentStylesheet" не вариант, потому что я не хочу терять внешний вид и стиль по умолчанию, и я уже вызываю его, чтобы установить стиль MODENA. Я хочу расширить CSS по умолчанию, чтобы не заменять его. И я не хочу переписывать всю МОДЕНУ также (очевидно).

И я действительно не хочу устанавливать одну и ту же таблицу стилей для каждой формы / сцены в приложении вручную (или добавлять ее в каждый файл FXML). Там много форм, динамически построенные диалоги. И основная причина, есть части (и библиотеки), которые совместно используются несколькими приложениями, поэтому я не хочу жестко кодировать любые таблицы стилей (которые могут иметь разные имена и пути для разных приложений).

Поэтому мне нужен способ установить дополнительную таблицу стилей для каждой возможной сцены приложения в одной точке программы. Это возможно в FX9?

PS Я изучал пользовательские загрузчики FXML, CSS-загрузчики, загрузчики сцен и другие способы перехвата создания сцены - нет никакого способа!

1 ответ

Решение

Это просто еще один недостаток JavaFX - просто используйте параметр JVM, приведенный ниже, чтобы сделать StyleManager доступным.

--add-exports=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED
Другие вопросы по тегам