Таблицы стилей в FXML (JDK 9)
Не работает после обновления до JDK 9.
<stylesheets>
<URL value="@MainView.css" />
</stylesheets>
Вызвано: java.lang.IllegalArgumentException: Невозможно привести @MainView.css к классу java.net.URL.
Вы можете мне помочь?
1 ответ
Как было сказано выше, есть два способа подключить css. Чтобы это сработало, создайте в корневом каталоге папку "resources", такую как "src", и поместите туда файл. Тогда вы можете попробовать:
<stylesheets>
<URL value="@/resources/MainView.css" />
</stylesheets>
или
stylesheets="@/resources/MainView.css"
Он работает для меня как атрибут на корневом уровне, вот мой Index.fxml в качестве примера:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" styleClass="app" stylesheets="@Index.css"
fx:controller="fr.pdem.view.IndexController" fx:id="root">
<!-- all the nodes-->
</AnchorPane>
Моя стратегия состоит в том, чтобы использовать один файл CSS для FXML, поэтому мне не нужен список файлов.
Дополнительное примечание: Не уверен, что это хорошая практика - использовать шаблоны при импорте, но только для примера, это работает.