JavaFX 2.x:如何在绘制后删除XY折线图?

Alb*_*sut 2 charts plot line javafx-2

我在XY线图上绘制了一个简单的系列,如下所示

public class SimpleXYLineChart extends Application {

@Override
public void start(Stage stage) {        
   stage.setTitle("Line plot");       

   final CategoryAxis xAxis = new CategoryAxis();
   final NumberAxis yAxis = new NumberAxis(1, 22, 0.5);

   yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis){
        @Override
    public String toString(Number object){
        return String.format("%7.2f", object);
    }
});
    final LineChart<String, Number>lineChart = new LineChart<String, Number>(xAxis, yAxis);

    lineChart.setCreateSymbols(false);
    lineChart.setAlternativeRowFillVisible(false);
    lineChart.setLegendVisible(false);
    lineChart.setTitle("LineChart");

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

    series1.getData().add(new XYChart.Data("Jan", 1));
    series1.getData().add(new XYChart.Data("Feb", 1.5));
    series1.getData().add(new XYChart.Data("Mar", 2));
    series1.getData().add(new XYChart.Data("Apr", 2.5));
    series1.getData().add(new XYChart.Data("May", 3));
    series1.getData().add(new XYChart.Data("Jun", 4));
    series1.getData().add(new XYChart.Data("Jul", 6));
    series1.getData().add(new XYChart.Data("Aug", 9));
    series1.getData().add(new XYChart.Data("Sep", 12));
    series1.getData().add(new XYChart.Data("Oct", 15));
    series1.getData().add(new XYChart.Data("Nov", 20));
    series1.getData().add(new XYChart.Data("Dec", 22));

    lineChart.getData().addAll(series1);        

    Scene scene = new Scene(new Group(), 800, 600);
    final VBox vbox = new VBox();
    final HBox hbox = new HBox();

    final Button remove = new Button("Remove Series");
    remove.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent e) {
    if (!lineChart.getData().isEmpty()){ 
        System.out.println("Remove Series");
        lineChart.getData().remove((lineChart.getData().size()-1),0);
        }
    }
    });                

    hbox.setSpacing(10);
    hbox.getChildren().addAll(remove);

    vbox.getChildren().addAll(lineChart, hbox);
    hbox.setPadding(new Insets(10, 10, 10, 50));

    ((Group)scene.getRoot()).getChildren().add(vbox);
    stage.setScene(scene);
    stage.show();
}

public static void main(String[] args) {
    launch(args);
}   
Run Code Online (Sandbox Code Playgroud)

}

我想删除绘制的线(通过单击按钮或标记一个复选框)并具有如下的空场景

在此输入图像描述

我不知道如何删除一旦绘制的Line,没有找到任何.remove()或.delete()方法.

怎么做到这一点?

谢谢

Alb*_*sut 7

问题现在解决了,似乎是JavaFX的一个bug.

我已经通过添加解决了

lineChart.setAnimated(假); 这一切都很好.在JIRA Kenai中,它通过注释lineChart.setCreateSymbols(false)被提议为bug;

这也有效,但我认为这不是正确的答案,我可以使用.setCreateSymbols(false)或(true)设置setAnimated(false);

  • 似乎(仍然)确实是一个错误 - 将setAnimated()设置为false可以解决问题. (2认同)