Я хочу загрузить 3 листа CSS, каждый из которых находится в одной папке (css), папка находится в том же каталоге, что и исходные файлы Java
Youследует переместить ваши файлы css / fxml в отдельную папку ресурсов - некоторые инструменты сборки даже не скопируют ваши ресурсы в выходной каталог, если они находятся в той же папке, что и исходные файлы.
Скажем, структура вашего проектаthis:
YourApplicationRoot
|--res //resource root
| |-fxml
| | |-Main.fxml
| |-css
| |-styles.css
|--src //source root
|-application
|-Core.java //main class is here
Во-первых, не используйте встроенные стили в FXML (style="some rules here"
) - это сложно поддерживать.
Далее вам не нужно 3 отдельных файла CSS, вы можете поместить все свои стили CSS в один файл (styles.css
) и использовать классы пользовательских стилей для их разделения:
/* These styles will only be applied to a chart with class `m1chart` */
.m1chart .chart-plot-background{
-fx-background-color: transparent;
}
.m1chart .default-color0.chart-series-line{
-fx-stroke: red;
}
/* These styles will only be applied to a chart with class `m2chart` */
.m2chart .chart-plot-background{
-fx-background-color: transparent;
}
.m2chart .default-color0.chart-series-line{
-fx-stroke: blue;
}
/* These styles will only be applied to a chart with class `l1chart` */
.l1chart .chart-plot-background{
-fx-background-color: transparent;
}
.l1chart .default-color0.chart-series-line{
-fx-stroke: green;
}
Теперь у вас есть два способа применить css к вашему приложению - от fxml
и из кода:
Чтобы применить styles.css
из fxml
, просто добавьте атрибут stylesheets
к корневому узлу и добавьтеstyleClass
атрибут для каждого LineChart
, который вы хотите стилизовать:
/* Main.fxml, irrelevant parts are omitted */
<AnchorPane stylesheets="@../css/styles.css">
...
<LineChart styleClass="m1chart">
...
</LineChart>
<LineChart styleClass="m2chart">
...
</LineChart>
<LineChart styleClass="l1chart">
...
</LineChart>
...
</AnchorPane>
Не забудьте удалить атрибуты style
и stylesheets
из LineChart
узлов.
Дляприменить styles.css
непосредственно из кода (обратите внимание, что ваши стили CSS не будут видны в SceneBuilder, если вы используете этот метод):
//in Core.java start() method
yourScene.getStylesheets().add(getClass().getResource("/css/styles.css").toExternalForm());
//in your fxml controller
M1chart.getStyleClass().add("m1chart");
M2chart.getStyleClass().add("m2chart");
L1chart.getStyleClass().add("l1chart");