我正在编写代码来制作显示在面板上的图表的图像文件。为此,我创建了缓冲图像,然后使用 ImageIO.write()。它可以工作,但只显示面板(灰色面板),但不显示该面板上的图表。这种情况该怎么办??这是我的代码
com.objectplanet.chart.NonFlickerPanel p =
new com.objectplanet.chart.NonFlickerPanel(new BorderLayout());
p.add("Center", chart); // this statements adds the chart in the center of the panel
ChartPanel.add("Center", p);
ChartPanel.setSize(500, 200);
ChartPanel.show();
int w = ChartPanel.getWidth();
int h = ChartPanel.getHeight();
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
ChartPanel.paint(g);
ChartPanel.printAll(g);
File f = new File("D:\\image.png");
try {
// png is an image format (like gif or jpg)
ImageIO.write(bi, "png", f);
} catch (IOException ex) {
ex.printStackTrace();
}
好吧,我解决了这个问题。任何面临同样问题的人,这里是解决方案
使用paintall函数而不是仅仅使用paint函数