Я новичок в CSS и пытаюсь создать MWE для диаграммы в JavaFX.Я был в состоянии заставить это работать в некоторых случаях, но мои проблемы всплывают, когда я пытаюсь определить переменные в корне.В конечном итоге я хочу обновить значения chart0-color
и chart1-color
в коде, но сейчас я пытаюсь просто определить их как переменные в .css.
Я запустил его через CSSLintи он выдал некоторые предупреждения о смежных классах, но без ошибок.
Если я заменим -chart0-color
и -chart1-color
любой другой цветной строкой, такой как red
или green
, проблема исчезнет.
Вы видите какие-либо проблемы в моем css?
dummy.css:
.root{
-chart0-color: #ff0000;
-chart1-color: #00ff00;
}
.default-color0.chart-legend-item-symbol { -fx-background-color: -chart0-color;}
.default-color0.chart-series-line {-fx-stroke: -chart0-color;}
.default-color0.chart-series-area-line {-fx-stroke: -chart0-color;}
.default-color0.chart-series-area-fill {-fx-fill: -chart0-color;}
.default-color1.chart-legend-item-symbol { -fx-background-color: -chart1-color;}
.default-color1.chart-series-line {-fx-stroke: -chart1-color;}
.default-color1.chart-series-area-line {-fx-stroke: -chart1-color;}
.default-color1.chart-series-area-fill {-fx-fill: -chart1-color;}
CSSAreaChartMWE.java:
package csstest;
import java.util.function.Function;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.AreaChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Series;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class CSSAreaChartMWE extends Application {
private ObservableList<XYChart.Data<Number, Number>> functionToData(Function<Double, Double> f, double minx, double maxx) {
ObservableList<XYChart.Data<Number, Number>> list = FXCollections.observableArrayList();
double dx = (maxx-minx)/(100);
double x = minx;
while (x < maxx) {
list.add(new XYChart.Data<>(x, f.apply(x))); x+=dx;
}
return list;
}
@Override
public void start(Stage primaryStage) throws Exception {
double minx = 0;
double maxx = 6*Math.PI;
double amp = 5;
double period = (maxx-minx)/6;
Series<Number, Number> sin = new Series<>("sin", functionToData((x) -> amp*Math.sin(x/period), minx, maxx));
Series<Number, Number> cos = new Series<>("cos", functionToData((x) -> amp*Math.cos(x/period), minx, maxx));
ObservableList<Series<Number, Number>> series = FXCollections.observableArrayList();
series.add(sin);
series.add(cos);
NumberAxis xAxis = new NumberAxis();
NumberAxis yAxis = new NumberAxis();
AreaChart chart = new AreaChart(xAxis, yAxis, series);
chart.getStylesheets().add(getClass().getResource("dummy.css").toExternalForm());
chart.setStyle("chart1-color: black; chart2-color: red");
VBox box = new VBox();
box.getChildren().add(chart);
Scene scene = new Scene(box);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String [] args) {
launch(args);
}
}
и, наконец, ошибки:
WARNING: Could not resolve '-chart0-color' while resolving lookups for '-fx-fill' from rule '*.default-color0.chart-series-area-fill' in stylesheet file:/*****/csstest/dummy.css
Jan 31, 2019 6:01:09 PM javafx.scene.CssStyleHelper calculateValue
WARNING: Could not resolve '-chart0-color' while resolving lookups for '-fx-stroke' from rule '*.default-color0.chart-series-area-line' in stylesheet file:/*****/classes/csstest/dummy.css
.......