JavaFX CSS theming через @import и переменные


Я начал присваивать переменные часто используемым цветам в моем JavaFX CSS и ссылаться на переменные, а не на цветовые константы:

* {
    theme-backgroundDark: #335588;
}

#messageListPane {
    -fx-background-color: theme-backgroundDark;
}
Теперь я хочу взять блок, где я определяю имена переменных цвета, и переместить его в отдельный .файл CSS. Это позволит мне поменять местами разные .css файлы во время выполнения для изменения темы приложения:

Theme1.css

* {
    theme-backgroundDark: #335588;
}

Главное.css

@import url( "/styles/Theme1.css" );

#messageListPane {
    -fx-background-color: theme-backgroundDark;
}

Но когда я делаю это, JavaFX невозможно найти переменные во время выполнения:

WARNING: Could not resolve 'theme-backgroundDark' while resolving lookups for '-fx-background-color' from rule '*#messageListPane ' in stylesheet file:/C:/xxxx/styles/Main.css

Это не проблема с утверждением @import; у меня есть другие @imports, которые определяют селекторы классов, и те прекрасно подобраны в Main.css. Похоже, это как-то связано с селектором подстановочных знаков * { ... }.

Так почему же именованные переменные цвета в селекторе подстановочных знаков работают в том же CSS, но не при импорте из другого CSS?

1 2

1 ответ:

Названные цвета прекрасны. Мой оператор @ import игнорируется, просто так. Если я приложу темы.css вручную через код, названные цвета видны. Оператор @ import не собирает файл themes и не выдает мне никаких ошибок. Для этого я открою еще один вопрос.