Как установить несколько таблиц стилей 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