import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.chart.AreaChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart.Data; import javafx.scene.chart.XYChart.Series; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.stage.Stage; public class debugPlotter extends Application{ public static void main(String[] args) { launch(args); } double startX = -5; double endX = 5 ; double zoomFactor = 1; double step = 0.1; @SuppressWarnings("unchecked") @Override public void start(Stage stage) throws Exception { final ObservableList> inData = FXCollections.observableArrayList(); final Series series2 = new Series(); for (double i = startX ; i < endX ; i+=0.1) { inData.add(new Data(i, Math.sin(i))); } series2.setData(inData); final NumberAxis xAx = new NumberAxis(); final NumberAxis yAx = new NumberAxis(); final AreaChart chart = new AreaChart(xAx , yAx); chart.getData().addAll(series2); chart.setOnKeyPressed(new EventHandler() { @Override public void handle(KeyEvent e) { if (e.getCode().equals(KeyCode.UP)){ //when pressing up key add new 2 point 1 from left and 1 from right startX -=step; endX +=step; series2.getData().add(0,new Data(startX, Math.sin(startX))); series2.getData().add(new Data(endX, Math.sin(endX))); } else if (e.getCode().equals(KeyCode.DOWN)){ //when pressing down key remove new 2 point 1 from left and 1 from right inData.remove(inData.size()-1); inData.remove(0); startX +=step; endX -=step; } } }); stage = new Stage(); Group root = new Group(chart); Scene scene = new Scene(root); stage.setWidth(500); stage.setHeight(500); stage.setScene(scene); stage.show(); chart.requestFocus(); } }