简体   繁体   English

JavaFX LineChart-清除图表中的数据

[英]JavaFX LineChart - clean data from chart

i have problem with remove data from line chart. 我在从折线图中删除数据时遇到问题。 I wrote a program drawing graphs that after the action click on the button completes the chart data. 我编写了一个程序图形绘制程序,在单击按钮后完成了图表数据的绘制。

dataSeries1.getData().removeAll(); dataSeries1.getData()的removeAll(); <- doesn't work. <-不起作用。

Code: 码:

 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);

Button action: 按钮动作:

 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() + ")");
            }
        }
    });

Can anyone help me to remove data after drawing a new chart? 谁能帮我在绘制新图表后删除数据?

removeAll requires elements to be removed passed in its parameter. removeAll要求在其参数中传递要删除的元素。 Since you provided none - nothing gets removed: 由于您未提供任何内容-不会删除任何内容:

dataSeries1.getData().removeAll();

You want to use clear() instead in the line above. 您想在上面的行中使用clear()

public void clear() 公共无效clear()

Removes all of the elements from this list (optional operation). 从此列表中删除所有元素(可选操作)。 The list will be empty after this call returns. 该调用返回后,该列表将为空。

You can use Collections.singleton to remove all data: 您可以使用Collections.singleton删除所有数据:

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

See Oracle documentation for Collections.singleton https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html 请参阅Oracle文档中的Collections.singleton https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM