Search code examples
javajavafxgraphchartsline

How to change colors of a line graph JavaFX


I'm making a stock market game and I'm using the JavaFX line chart to show trend lines and estimated price movements, and currently I'm only getting an orange line, and it doesn't match the theme of the rest of the UI.

for reference, the two HEX values that I'd like to stick to are

1 - 46424D

2 - 2F2C38

I've searched the web for ideas, and all things mostly point to using some CSS script that I'm not currently familiar with.

Thanks!

  • Kellen Miller

Solution

  • import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.chart.LineChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.stage.Stage;
    
    public class LineChartSample extends Application
    {
    
        @Override
        public void start(Stage stage)
        {
            stage.setTitle("Line Chart Sample");
            //defining the axes
            final NumberAxis xAxis = new NumberAxis();
            final NumberAxis yAxis = new NumberAxis();
            xAxis.setLabel("Number of Month");
            //creating the chart
            final LineChart<Number, Number> lineChart
                    = new LineChart<Number, Number>(xAxis, yAxis);
    
            lineChart.setTitle("Stock Monitoring, 2010");
            //defining a series
            XYChart.Series series = new XYChart.Series();
            series.setName("My portfolio");
            //populating the series with data
            series.getData().add(new XYChart.Data(1, 23));
            series.getData().add(new XYChart.Data(2, 14));
            series.getData().add(new XYChart.Data(3, 15));
            series.getData().add(new XYChart.Data(4, 24));
            series.getData().add(new XYChart.Data(5, 34));
            series.getData().add(new XYChart.Data(6, 36));
            series.getData().add(new XYChart.Data(7, 22));
            series.getData().add(new XYChart.Data(8, 45));
            series.getData().add(new XYChart.Data(9, 43));
            series.getData().add(new XYChart.Data(10, 17));
            series.getData().add(new XYChart.Data(11, 29));
            series.getData().add(new XYChart.Data(12, 25));
    
            Scene scene = new Scene(lineChart, 800, 600);
            lineChart.getData().add(series);
    
            series.getNode().setStyle("-fx-stroke: #336699; ");
    
            stage.setScene(scene);
            stage.show();
        }
    
        public static void main(String[] args)
        {
            launch(args);
        }
    }
    

    enter image description here