2
votes

I have very simple example of Line chart.

    public class MainApp extends Application
{

    XYChart.Series series = new XYChart.Series();

    @Override
    public void start(Stage stage)
    {

        setUserAgentStylesheet(STYLESHEET_CASPIAN);

        stage.setTitle("Line Chart Sample");
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
        xAxis.setLabel("Month");

        final LineChart<String, Number> lineChart = new LineChart<String, Number>(xAxis, yAxis);

        lineChart.setTitle("Stock Monitoring, 2010");


        series.setName("My portfolio");

        insertLineChartData("Jan", 23);
        insertLineChartData("Feb", 14);
        insertLineChartData("Mar", 15);
        insertLineChartData("Jun", 36);
        insertLineChartData("Jul", 22);
        insertLineChartData("Aug", 45);
        insertLineChartData("Sep", 43);
        insertLineChartData("Oct", 17);
        insertLineChartData("Nov", 29);
        insertLineChartData("Dec", 25);

        Scene scene = new Scene(lineChart, 800, 600);
        lineChart.getData().add(series);

        stage.setScene(scene);
        stage.show();
    }


    public void insertLineChartData(String name, float value){

        series.getData().add(new XYChart.Data(name, value));

    }

    public void updateLineChartData()
    {

        for (XYChart.Data<String, Number> data : series.getData())
        {
            Number oldValue = data.getYValue();
            data.setYValue(oldValue.intValue() + 5);

        }

    }


    public static void main(String[] args)
    {
        launch(args);
    }
}

I want to create Java method which updates the values into the Line Chart. Can you help me to create this Java method.

1

1 Answers

3
votes

You need to work with series to manipulate chart data

public void update() {
    for (XYChart.Data<String, Number> data : series.getData()) {
        Number oldValue = data.getYValue();
        data.setYValue(oldValue.intValue() + 5);

    }
}

you can test it next way:

    lineChart.setOnMouseClicked(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent t) {
            update();
        }
    });