我使用JFreeChart在java swing中创建图像直方图。为了创建它,我遍历所有像素以获得所有颜色。取决于大小和位深度,它需要一些时间。为什么我不能将一个XYSeriesCollection的值复制到其他地方?
一旦我把所有的数据放到一个XYSeriesCollection变量中。为了能够显示和隐藏一些后面的内容,我保存了该变量的副本。
我的问题是,如果我不喜欢这样写道:
这工作没有任何问题,但它是没有效率的,因为我不得不遍历所有像素,并需要一段时间。
如果我只是复制这样的:
final XYSeriesCollection data = createHistogram();
final XYSeriesCollection dataCopy = data;
当我执行的代码,我得到这个异常:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Series index out of bounds
at org.jfree.data.xy.XYSeriesCollection.getSeries(XYSeriesCollection.java:263)
我认为,这是因为当我删除数据的一些系列他们如何从dataCopy中删除,但不应该完全不同?我只是这个方法的工作:
data.removeAllseries();
data.addSeries(dataCopy.getSeries(index));
例如,如果我创建:
int x = 5;
int y = x;
x=0;
System.out.println(y)
输出应该仍然是5,它并不无论我做什么用X。我在做什么或者认为是错误的?
谢谢。
非常感谢,现在完美无缺。我一直在试图做这样的链接直方图说,但是一旦我做完了,我不能通过从数据收集中删除系列来显示单个R,G或B通道,因为HistogramDataset不包含方法删除系列。因此,我决定自己编写一切,遍历所有像素,并在macbook pro 2012 13中为每张17Mpx的TIFF照片和每种颜色16位创建一个“大约需要4秒的时间” – nck
@nck:改变模型,而不是改变模型视图中一系列的可见性; ['VisibleAction'](http://stackoverflow.com/a/11895709/230513)就是一个例子。 – trashgod