JavaFX LineChart - 从图表中清除数据

JavaFX LineChart - clean data from chart

我无法从折线图中删除数据。我写了一个绘制图表的程序,点击按钮完成图表数据。

dataSeries1.getData().removeAll(); <- 不起作用。

代码:

 NumberAxis xAxis = new NumberAxis();
    xAxis.setLabel("Oś Y");
    NumberAxis yAxis = new NumberAxis();
    yAxis.setLabel("Oś X");
    final LineChart lineChart = new LineChart(xAxis, yAxis);
    final XYChart.Series dataSeries1 = new XYChart.Series();

    lineChart.setCreateSymbols(false);
    lineChart.getData().add(dataSeries1);

按钮操作:

 btn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {

            int lewy = Integer.parseInt(kresLewy.getText());
            int prawy = Integer.parseInt(kresPrawy.getText());
            String rownanie = field.getText();

            try {

                String tekst = lewy + "; " + prawy + "; " + rownanie;

                StringReader tekstReader = new StringReader(tekst);

                parsery.interpreter.parser parser_obj
                        = new parsery.interpreter.parser(new parsery.interpreter.MyLexer(tekstReader));

                Object result = parser_obj.parse().value;

                String sWynik = result.toString();

                ZmiennaX zX = new ZmiennaX();
                ArrayList<Double> xArr = new ArrayList<Double>();
                for (double i = lewy; i <= prawy + 0.001; i = i + zX.getDokladnosc()) // +0.001 dla bledow zaokraglenia
                {
                    xArr.add(zX.round2(i));
                }
                String sX = xArr.toString();
                String wartosciX = sX.substring(1, sX.length() - 1);
                String wartosciY = sWynik.substring(1, sWynik.length() - 1);

                String XbezSpacji = wartosciX.replace(" ", "");
                String YbezSpacji = wartosciY.replace(" ", "");

                String[] splitX = XbezSpacji.split(",");
                String[] splitY = YbezSpacji.split(",");
                dataSeries1.getData().removeAll();

                for(int i=0; i<splitX.length; i++){
                double x = Double.parseDouble(splitX[i]);
                double y = Double.parseDouble(splitY[i]);
                dataSeries1.getData().add(new XYChart.Data(x, y));
                }

            } catch (Exception e) {
                System.out.println("Podczs obliczenia wystapil blad. (" + e.getMessage() + ")");
            } catch (Error error) {
                System.out.println("Podczs obliczenia wystapil blad. (" + error.getMessage() + ")");
            }
        }
    });

谁能帮我在绘制新图表后删除数据?

removeAll 要求删除在其参数中传递的元素。由于您提供了 none - 没有任何内容被删除:

dataSeries1.getData().removeAll();

您想在上面的行中使用 clear()

public void clear()

Removes all of the elements from this list (optional operation). The list will be empty after this call returns.

您可以使用Collections.singleton删除所有数据:

dataSeries1.getData().removeAll(Collections.singleton(barChart.getData().setAll()));

请参阅有关 Collections.singleton https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html

的 Oracle 文档