-
-
Save jewelsea/5095145 to your computer and use it in GitHub Desktop.
| import javafx.application.Application; | |
| import javafx.collections.*; | |
| import javafx.scene.Scene; | |
| import javafx.stage.Stage; | |
| import javafx.scene.chart.*; | |
| public class PieChartWithCustomColors extends Application { | |
| @Override public void start(Stage stage) { | |
| ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList( | |
| new PieChart.Data("Grapefruit", 13), | |
| new PieChart.Data("Oranges", 25), | |
| new PieChart.Data("Plums", 10), | |
| new PieChart.Data("Pears", 22), | |
| new PieChart.Data("Apples", 30) | |
| ); | |
| final PieChart chart = new PieChart(pieChartData); | |
| chart.setLegendVisible(false); | |
| stage.setScene(new Scene(chart)); | |
| stage.show(); | |
| applyCustomColorSequence( | |
| pieChartData, | |
| "aqua", | |
| "bisque", | |
| "chocolate", | |
| "coral", | |
| "crimson" | |
| ); | |
| } | |
| private void applyCustomColorSequence(ObservableList<PieChart.Data> pieChartData, String... pieColors) { | |
| int i = 0; | |
| for (PieChart.Data data : pieChartData) { | |
| data.getNode().setStyle("-fx-pie-color: " + pieColors[i % pieColors.length] + ";"); | |
| i++; | |
| } | |
| } | |
| public static void main(String[] args) { launch(args); } | |
| } |
I also can not change the subtitle color.
But, thank you for help me!
Sorry for my english, i'm learning, hehehe.
I think you can use this after initializing scene :
try
{
scene.getStylesheets().add("chart.css");
}
catch (Exception ex)
{
System.err.println("Cannot acquire stylesheet: " + ex.toString());
}
then :
use your style chart like this :
.data0.chart-pie
{
-fx-pie-color: #505FA3;
}
.data1.chart-pie{
-fx-pie-color: #9999ff;
}
Just remove applyCustomColorSequence( pieChartData, "aqua", "bisque", "chocolate", "coral", "crimson" ); and add this lines:
Scene scene = new Scene(chart);
scene.getStylesheets().add("/css/pie-chart-custom-colors.css");
stage.setScene(scene);
Now create a new .css file and add this code:
.default-color0.chart-pie { -fx-pie-color: #ffd700; }
.default-color1.chart-pie { -fx-pie-color: #ffa500; }
.default-color2.chart-pie { -fx-pie-color: #860061; }
.default-color3.chart-pie { -fx-pie-color: #adff2f; }
.default-color4.chart-pie { -fx-pie-color: #ff5700; }
This way you will change the color of each element also you can use color names like this:
.default-color0.chart-pie { -fx-pie-color: blue; }
.default-color1.chart-pie { -fx-pie-color: red; }
.default-color2.chart-pie { -fx-pie-color: green; }
.default-color3.chart-pie { -fx-pie-color: yellow; }
.default-color4.chart-pie { -fx-pie-color: pink; }
This method is a reference to the documentation How to styling chart with CSS

Answer to StackOverflow question: Javafx change PieChart color