gpt4 book ai didi

java - 从 CombinedDomainXYPlot 获取绘图(并删除它们)

转载 作者:行者123 更新时间:2023-11-30 08:12:17 25 4
gpt4 key购买 nike

如果我不保留对它们的任何引用,是否有办法将绘图列表添加到 CombinedDomainXYPlot

我想得到那里的地 block ,与他们一起工作,并可能将它们从合成的地 block 中移除。

这是向 CombinedDomainXYPlot 添加绘图的示例代码:

// axis
DateAxis domainAxis = new DateAxis("Date");

// plot container
CombinedDomainXYPlot plotCombined = new CombinedDomainXYPlot(domainAxis);

// plot 1
XYPlot plot1 = new XYPlot();
plot1.setDomainAxis(domainAxis);
plotCombined.add(plot1);

// plot 2
XYPlot plot2 = new XYPlot();
plot2.setDomainAxis(domainAxis);
plotCombined.add(plot2);

更新 1:

我刚刚试过这段代码,但它没有返回所有的图。这不可靠。

for (Object sp : plotCombined.getSubplots()) {
plotCombined.remove((XYPlot)sp);
}

这种去除地 block 的方法是否正确?

完整示例代码:

import javax.swing.JFrame;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.XYPlot;


public class sample27 extends JFrame {

public sample27() {
super("sample27");

// axis
DateAxis domainAxis = new DateAxis("Date");

// plot container
CombinedDomainXYPlot plotCombined = new CombinedDomainXYPlot(domainAxis);

// plot 1
XYPlot plot1 = new XYPlot();
plot1.setDomainAxis(domainAxis);
plotCombined.add(plot1);

// plot 2
XYPlot plot2 = new XYPlot();
plot2.setDomainAxis(domainAxis);
plotCombined.add(plot2);

System.out.println("plot count before: " + plotCombined.getSubplots().size());
for (Object sp : plotCombined.getSubplots()) {
System.out.println("removing subplot: " + sp);
plotCombined.remove((XYPlot)sp);
}
System.out.println("plot count after: " + plotCombined.getSubplots().size());
}

public static void main(String[] args) {
new sample27();
}

}

输出:

plot count before: 2
removing subplot: org.jfree.chart.plot.XYPlot@15615099
plot count after: 1

最佳答案

getSubplots 返回一个包含所有项目的 List - 这个 List 从它使用的角度来看是 copy Collections.unmodifiableList,它返回一个由原始列表支持的新 List。当您遍历 List 时,项目实际上从底层 List 中删除,影响了 Collection 的迭代。

而不是依赖迭代(例如 for (Object sp : plotCombined.getSubplots())),向后遍历数组并使用索引删除项目。

for ( int i = plotCombined.getSubplots().size() - 1; i >= 0; i-- ){
plotCombined.remove((XYPlot)plotCombined.getSubplots().get(i));
}

关于java - 从 CombinedDomainXYPlot 获取绘图(并删除它们),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com