我正在使用 XYPlot 来显示包含 1 条或多条线的折线图。我将它与侦听器模式相结合,以便它可以接收更新:如果是这样,它使用dataset.removeAllSeries()
(dataset is of type XYSeriesCollection
) 调用删除行,然后使用添加新行dataset.addSeries(...)
但是,带有新行的新图形将具有不同的颜色!
因此,颜色渲染器可能会继续分发新颜色。
是否有可能重置渲染器,使其再次以第一种颜色开始?
我正在使用 XYPlot 来显示包含 1 条或多条线的折线图。我将它与侦听器模式相结合,以便它可以接收更新:如果是这样,它使用dataset.removeAllSeries()
(dataset is of type XYSeriesCollection
) 调用删除行,然后使用添加新行dataset.addSeries(...)
但是,带有新行的新图形将具有不同的颜色!
因此,颜色渲染器可能会继续分发新颜色。
是否有可能重置渲染器,使其再次以第一种颜色开始?
您可以使用setSeriesPaint()
渲染器的方法为每个系列设置新的颜色。
例子:
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.blue);
第一个参数是系列的索引。
plot.getRenderer().setSeriesPaint(serieindex, null);
这是我自己发现的渲染器重置的替代品(我为初学者感到自豪:))。我的图表中有许多系列,必须删除,然后由于新的计算再次添加。我需要 1 系列始终是黑色的,而其他系列则以除黑色以外的任何颜色涂漆。现在,因为我收到了可能是新订单的新系列,所以我不能使用:
plot.getRenderer().setSeriesPaint(0, new Color(0,0,0);
就像那样,因为如果我在第一次计算中将第一个系列设置为黑色,那么未来的每个第一个系列(在新计算中)都将始终是黑色,所以我不仅可以得到一个黑色的特定系列(因为添加系列的顺序不同) ,我不想这样做。如果我使用以下方法删除所有系列:
dataset.removeAllSeries();
它不会重置系列的固定颜色(如果您使用 setSeriesPaint(serieindex, new Color(RGB, RGB, RGB)),例如 3 系列,您删除它们并再次添加新系列,新系列将获得它们的颜色之前由您为具有相同索引的其他系列修复)。所以我正在考虑重置渲染器,我在互联网上一无所获,但我尝试将“null”作为颜色。使用固定的“null”作为颜色系列的线几乎不可见(我现在不记得我是如何检查这个的),但它不是渲染器的颜色,所以它会自动从其列表中获取新颜色(你可以覆盖 BTW )。所以现在我可以为一个特定的系列设置黑色。我使用它的随机索引:
int serieindex = dataset.indexOf(seriename);
因为我知道它的名字(key)。我正在为任何其他系列设置空“颜色”,因此它们从渲染器列表中获取第一个免费颜色。我想您也可以使用它来保持相同的新系列颜色,但是在最简单的情况下设置固定颜色当然比我的要好。
总之,我发现了一个“颜色渲染器重置”,它删除了为具有特定编号的系列所做的一次颜色定义,因此在删除系列后,任何具有此编号的新系列都可以自动从列表中获取新颜色。我希望它会帮助某人:)。这是我的第一个答案,所以也许它不是最好的。