title: JavaFx 2.x : How to remove and add plotted data?
body: <p>In my code below I would like to add two buttons and by clicking on a button("Remove") it will remove one by one plotted data,and plot it back by clicking on the button("Add") such as the examples:</p>
  
  <p>Full data plotted by running the class</p>
  
  <p><img src="https://i.stack.imgur.com/peKyg.jpg" alt="enter image description here"></p>
  
  <p>Now by a single click on a Remove button last data point disappear</p>
  
  <p><img src="https://i.stack.imgur.com/CqP8s.jpg" alt="enter image description here"></p>
  
  <p>another click and again last data point disappear, and so on</p>
  
  <p><img src="https://i.stack.imgur.com/frIz3.jpg" alt="enter image description here"></p>
  
  <p>The inverse operation would be performed by clicking on "Add" button: each click will add back a data point</p>
  
  <pre><code>import javafx.application.Application; 
  import javafx.beans.property.SimpleDoubleProperty; 
  import javafx.event.EventHandler;  
  import javafx.scene.chart.NumberAxis; 
  import javafx.scene.chart.XYChart; 
  import javafx.stage.Stage; 
  import javafx.scene.Scene; 
  import javafx.scene.chart.LineChart; 
  import javafx.scene.control.Button;
  import javafx.scene.input.MouseEvent; 
  import javafx.scene.layout.BorderPane; 
  
  public class XYMove extends Application {
  
  BorderPane pane; 
  XYChart.Series series1 = new XYChart.Series(); 
  
  SimpleDoubleProperty rectinitX = new SimpleDoubleProperty(); 
  SimpleDoubleProperty rectX = new SimpleDoubleProperty(); 
  SimpleDoubleProperty rectY = new SimpleDoubleProperty(); 
  
  Button button1 = new Button("Remove");
  Button button2 = new Button("Add");
  
  @Override 
  public void start(Stage stage) { 
  
  final NumberAxis xAxis = new NumberAxis(12, 20, 1);
  
  double max = 12;
  double min = 3;
  
  max *= (1+((double)3/100));
  min *= (1-((double)3/100));
  
  final NumberAxis yAxis = new NumberAxis(min, max, 1); 
  
  xAxis.setAnimated(false);
  yAxis.setAnimated(false);
  
  yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis) { 
  
  @Override 
  public String toString(Number object) { 
      return String.format("%2.0f", object); 
  } 
  }); 
  
  final LineChart&lt;Number, Number&gt; lineChart = new LineChart&lt;Number, Number&gt;(xAxis, yAxis); 
  
  lineChart.setCreateSymbols(false); 
  lineChart.setAlternativeRowFillVisible(false); 
  lineChart.setAnimated(false); 
  lineChart.setLegendVisible(false);
  
  series1.getData().add(new XYChart.Data(1, 3)); 
  series1.getData().add(new XYChart.Data(2, 8)); 
  series1.getData().add(new XYChart.Data(3, 6)); 
  series1.getData().add(new XYChart.Data(4, 7)); 
  series1.getData().add(new XYChart.Data(5, 5)); 
  series1.getData().add(new XYChart.Data(6, 6)); 
  series1.getData().add(new XYChart.Data(7, 4)); 
  series1.getData().add(new XYChart.Data(8, 7)); 
  series1.getData().add(new XYChart.Data(9, 6)); 
  series1.getData().add(new XYChart.Data(10, 7));
  series1.getData().add(new XYChart.Data(11, 6)); 
  series1.getData().add(new XYChart.Data(12, 7));
  series1.getData().add(new XYChart.Data(13, 6));
  series1.getData().add(new XYChart.Data(14, 12)); 
  series1.getData().add(new XYChart.Data(15, 10)); 
  series1.getData().add(new XYChart.Data(16, 11)); 
  series1.getData().add(new XYChart.Data(17, 9)); 
  series1.getData().add(new XYChart.Data(18, 10));
  
  pane = new BorderPane(); 
  pane.setCenter(lineChart); 
  Scene scene = new Scene(pane, 800, 600); 
  lineChart.getData().addAll(series1); 
  
  stage.setScene(scene);         
  
  scene.setOnMouseClicked(mouseHandler); 
  scene.setOnMouseDragged(mouseHandler); 
  scene.setOnMouseEntered(mouseHandler); 
  scene.setOnMouseExited(mouseHandler); 
  scene.setOnMouseMoved(mouseHandler); 
  scene.setOnMousePressed(mouseHandler); 
  scene.setOnMouseReleased(mouseHandler); 
  stage.show();
  } 
  
  EventHandler&lt;MouseEvent&gt; mouseHandler = new EventHandler&lt;MouseEvent&gt;() { 
  
  @Override 
  public void handle(MouseEvent mouseEvent) { 
  
  if (mouseEvent.getEventType() == MouseEvent.MOUSE_PRESSED) {             
      rectinitX.set(mouseEvent.getX()); 
  } 
  else if (mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED ||  mouseEvent.getEventType() == MouseEvent.MOUSE_MOVED) { 
      LineChart&lt;Number, Number&gt; lineChart = (LineChart&lt;Number, Number&gt;) pane.getCenter(); 
      NumberAxis xAxis = (NumberAxis) lineChart.getXAxis(); 
  
      double Tgap = xAxis.getWidth()/(xAxis.getUpperBound() - xAxis.getLowerBound()); 
      double newXlower=xAxis.getLowerBound(), newXupper=xAxis.getUpperBound();             
      double Delta=0.3;
  
      if(mouseEvent.getEventType() == MouseEvent.MOUSE_DRAGGED){
      if(rectinitX.get() &lt; mouseEvent.getX()&amp;&amp; newXlower &gt;= 0){    
          newXlower=xAxis.getLowerBound()-Delta;
          newXupper=xAxis.getUpperBound()-Delta;
      }
  else if(rectinitX.get() &gt; mouseEvent.getX()&amp;&amp; newXupper &lt;= 22){    
          newXlower=xAxis.getLowerBound()+Delta;
          newXupper=xAxis.getUpperBound()+Delta;
      }    
      xAxis.setLowerBound( newXlower ); 
      xAxis.setUpperBound( newXupper );                        
      }                                        
      rectinitX.set(mouseEvent.getX());                                 
   } 
   } 
   }; 
   public static void main(String[] args) {
      launch(args);
  }
  }
  </code></pre>
  
  <p>Thanks all.</p>
  
  <p><strong>Edit:</strong> I have been able to solve this issue, thanks all</p>