【问题标题】:Drawing on JFreeChart after it has been created创建后在 JFreeChart 上绘图
【发布时间】:2013-04-17 17:14:18
【问题描述】:

我正在做一个学校项目,我已经被这个问题困扰了一周。创建 jfreechart 后,我​​不知道如何对其进行注释。

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

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

我如何扩展 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"),它不会更新面板上的文本。 线条和其他形状也是如此。

【问题讨论】:

    标签: java annotations jfreechart


    【解决方案1】:

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

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

    ChartPanel API 文档中所述,每当收到任何更改通知时,都会自动重绘图表。

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

    【讨论】:

    • 感谢您的回答。我举了一个我的 ChartPanel 扩展的例子,它不起作用......如何编辑它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多