package controls; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.event.EventHandler; import javafx.scene.chart.AreaChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.scene.input.MouseEvent; public class AdvancedAreaChartSample extends Application { private void init(Stage primaryStage) { Group root = new Group(); primaryStage.setScene(new Scene(root)); root.getChildren().add(createChart()); } protected AreaChart createChart() { NumberAxis xAxis = new NumberAxis(); NumberAxis yAxis = new NumberAxis(); AreaChart ac = new AreaChart(xAxis,yAxis); // setup chart ac.setTitle("Area Chart Example"); xAxis.setLabel("X Axis"); yAxis.setLabel("Y Axis"); // add starting data final XYChart.Series series = new XYChart.Series(); series.setName("Data Series 1"); double x = 0; while (x<95) { series.getData().add(new XYChart.Data(x, Math.random()*99)); x += 5 + (15*Math.random()); } series.getData().add(new XYChart.Data(99d, Math.random()*99)); ac.getData().add(series); ac.setOnMouseClicked(new EventHandler() { @Override public void handle(MouseEvent t) { // here happens NPE series.getData().remove(series.getData().size() - 1); } }); return ac; } @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); } public static void main(String[] args) { launch(args); } }