Java 如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?

Java 如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?,java,swing,overlay,jfreechart,Java,Swing,Overlay,Jfreechart,我有一个用Swing和JFreeChart制作的应用程序,我正在将一个ChartPanel对象导出到一个图像(确切地说是BuffereImage)。我希望添加的覆盖是面板的“一部分”,并与面板一起导出,但事实并非如此。除覆盖层外,所有内容都正确导出。我如何让它包含覆盖或导出到图像本身,这样我至少可以尝试将它们组合在一起 简化代码: CrosshairOverlay crosshairOverlay = new CrosshairOverlay(); //overlay confi

我有一个用Swing和JFreeChart制作的应用程序,我正在将一个ChartPanel对象导出到一个图像(确切地说是BuffereImage)。我希望添加的覆盖是面板的“一部分”,并与面板一起导出,但事实并非如此。除覆盖层外,所有内容都正确导出。我如何让它包含覆盖或导出到图像本身,这样我至少可以尝试将它们组合在一起

简化代码:

    CrosshairOverlay crosshairOverlay = new CrosshairOverlay();
    //overlay configuration here
    chartPanel.addOverlay(crosshairOverlay);
导出配电盘的代码:

    int width = 450;
    int height = 350;
    JFreeChart chart = chartPanel.getChart();
    BufferedImage image = chart.createBufferedImage(width, height);
为供参考,以下是一组:


我对JFreeChart或CrosshairOverlay的工作原理一无所知。还不了解CreateBuffereImage(…)方法。你可以尝试使用这个类。它是一个创建任何Swing组件的映像的类。如果这不起作用,那么JFreeChart在绘制覆盖时必须做一些奇怪的事情,因此我建议另一个选项是使用
Robot.createScreenCapture(…)
方法。此方法速度较慢,但它从屏幕上直接获取像素,因此它应该捕获覆盖。使用
createBufferedImage()
方法仅渲染图表。上面加上的A是有效的。试试@camickr的建议。