在创建JFreeChart后绘制它

时间:2013-04-17 17:14:19

标签: java annotations jfreechart

我正在做一个学校项目,我已经坚持这个问题一个星期了。我无法弄清楚如何在创建jfreechart之后对其进行注释。

现在程序看起来像这样 - > My program

用户应该能够通过鼠标单击在图表上绘制线条或添加字符串。有人知道怎么做吗?

我如何扩展ChartPanel:

import java.awt.Graphics;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;

public class ExChartPanel extends ChartPanel {
private static final long serialVersionUID = 1L;
String txt="Can add Strings before creating chart";

public ExChartPanel(JFreeChart chart){
    super(chart);
}

public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawString(txt, 100, 100);
}

public void setTxt(String txt) {
    this.txt = txt;
    repaint();
}}

现在,当我运行时,我可以在制作图表之前绘制字符串...但是如果按下主框架按钮来调用setTxt(“some txt”),它不会更新面板上的文本。 线条和其他形状也一样。

1 个答案:

答案 0 :(得分:2)

您需要扩展JFree ChartPanel才能添加此功能。

您的扩展类应捕获用户操作,创建注释并使用XYPlot.addAnnotation将其添加到基础JFreeChart。

ChartPanel API文档中所述,只要收到任何更改通知,图表就会自动重绘。

另外,请参阅ChartPanel源代码以更好地理解API,并在这些API之上构建您的类。