我正在使用JFreeChart库来创建Chart。我需要在同一个图表上显示大量数据。因此我有很多范围轴描述。 不幸的是,当范围轴太多时,图表不再可见。通过调用这些简单的行(其中plot是XYPlot实例)可以使图表可见:
int axises = plot.getRangeAxisCount();
for (int i = 0; i < axises; i++) {
plot.getRangeAxis(i).setVisible(false);
}
这段代码隐藏了所有RangeAxes。执行该代码后,图表没有范围轴的任何描述,但它是可见的。
但遗憾的是,我无法弄清楚如何在处理时间内确定图表是否可见。
对我来说重要的信息是:
chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea().getWidth()
但不幸的是我在图表上执行了许多操作(例如缩放,移动等),因此我需要每次都有这些信息,当图表的状态发生变化时。每当调用PlotChangeListener接口的plotChanged()方法时,我都无法获取该信息,因为没有绘图(此事件未被触发)。 ChartChangeListener中的chartChanged()方法过早触发 - chartPanel.getChartRenderingInfo()。getPlotInfo()。getDataArea()。getWidth()返回旧值。有什么想法吗?
答案 0 :(得分:2)
您可以向ChartPanel
添加ChartProgressListener
。
chart.addProgressListener(new ChartProgressListener() {
@Override
public void chartProgress(ChartProgressEvent event) {
System.out.println(event.getType() + " "
+ event.getPercent() + " "
+ chartPanel.getChartRenderingInfo()
.getPlotInfo().getDataArea().getWidth());
}
});