(1)chartdirector注册问题
由于jfreechart做的图总感觉有点模糊,所以采用chartdirector进行图表绘制,但是chartdirector如果未注册,将在下方显示未注册提示,所以需要下载5.1的破解版,并在程序中加入以下代码:
Chart.setLicenseCode("SXZVFNRN9MZ9L8LGA0E2B1BB");
最终生成的图片效果如下:
(2)chartdirector图片自适应面板大小
由于chartdirector绘制的图片区不能自动根据面板的大小自动绘图区域,所以需要给绘图面板添加监听,代码如下:
this.addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void componentResized(ComponentEvent e) {
System.out.println(getWidth() + "--" + getHeight());
createChart(viewer, data, getWidth(), getHeight());
}
@Override
public void componentMoved(ComponentEvent e) {
// TODO Auto-generated method stub
}
@Override
public void componentHidden(ComponentEvent e) {
// TODO Auto-generated method stub
}
});
(3)
当进行图片导出的时候,采用的图像生成和对话框中的图形生成是公用的一个方法,所以如果对话框太大,则生成的word中插入图片就会过大,如果想我word中生成的图片小小一点,则需要将对话框调小一点再导出。
(4)chartdirector的图像插入到word中
由于chartdirector中的图像是java.awt.Image图像,而itext中的图像是com.lowagie.text.Image图像,所以在图形导出时,要稍微转化一下,代码如下:
byte[] imbyte = chartpan.getViewer().getChart().makeChart(Chart.PNG);
Image png = com.lowagie.text.Image.getInstance(imbyte);
document.add(png);