JavaFX:克隆 XYChart.Series 不工作

标签 java javafx charts clone linechart

大家好,我遇到了这个问题:

XYChart.Series x = (XYChart.Series)((XYChart.Series)item).clone();

错误:clone() 已在 java.lang.Object 中保护访问

如何解决? 重要的是,x值的副本,并且不是指向克隆项的指针。

最佳答案

使用clone要求该方法由类型实现。大部分 JavaFX 类(如果不是全部)都不会这样做,因为大多数类都包含可能附加不可克隆监听器的属性。

这意味着您需要自己实现复制 XYChart.Series

由于您想要该系列的深拷贝,因此可以使用以下代码。根据您的用例,复制所有 XYChart.Data 对象可能是必要的,也可能不是:

public static <S, T> XYChart.Series<S, T> copySeries(XYChart.Series<S, T> series) {
    XYChart.Series<S, T> copy = new XYChart.Series<>(series.getName(),
            series.getData().stream()
                  .map(data -> new XYChart.Data<S, T>(data.getXValue(), data.getYValue()))
                  .collect(Collectors.toCollection(FXCollections::observableArrayList)));
    return copy;
}

如果不需要复制Data对象,则代码可以简化为

public static <S, T> XYChart.Series<S, T> copySeries(XYChart.Series<S, T> series) {
    XYChart.Series<S, T> copy = new XYChart.Series<>(series.getName(),
            FXCollections.observableArrayList(series.getData()));
    return copy;
}

关于JavaFX:克隆 XYChart.Series 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53807176/

相关文章:

javafx - 我的 JavaFX 工具提示未显示在图表数据节点上

javascript - 是否可以使用plotly.js 绘制饼图?

android - 条形图 X 值与 Y 值不对应

javascript - 在 Chart.js 中更改 X 和 Y 轴值的颜色

java - 在 Java 中解包数组/集合

java - 通用双向链表

java - 为什么RxJava2不支持 "Maybe.doOnDispose"?

java - 下载并解密存储桶中的加密 AWS CloudTrail 日志

java - 如何在 java fx 中显示打印对话框并打印文档(不仅仅是节点)

javafx - 传递参数JavaFX FXML