然后在ChartUtilities.writeImageMap方法中按这些资料生成MAP。
2. 如果要定制link 功能,需要一个URLGenerator,默认地提供了StandardPieURLGenerator,它预设了三个参数:
prefix: 一般是URL基地址; categoryParameterName:一般是分类名称; indexParameterName:数据名称
3. 如果要定制提示,要写一个ToolTipTagFragmentGenerator,默认用的是StandardToolTipTagFragmentGenerator,是$Key = $Value的形式
以下是基本的示例代码:
package test;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
import java.beans.*;
import org.jfree.chart.*;
import org.jfree.data.*;
import org.jfree.chart.demo.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.*;
import java.io.*;
import java.io.*;
import org.jfree.chart.labels.PieToolTipGenerator;
import org.jfree.chart.urls.StandardPieURLGenerator;
public class testPieChart {
public testPieChart() {
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("梨子",200);
dataset.setValue("葡萄",300);
dataset.setValue("香蕉",400);
dataset.setValue("荔枝",500);
return dataset;
}
public static void main(String[] args){
DefaultPieDataset data = getDataSet();
JFreeChart chart = ChartFactory.createPie3DChart("水果产量图", // 图表标题
data,
true, // 是否显示图例
false,
false
);
// then customise it a little...
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.green));
PiePlot pie = (PiePlot)chart.getPlot();
PieSectionLabelGenerator label = pie.getLabelGenerator();
pie.setLabelFont(new Font("dialog", Font.TRUETYPE_FONT, 8));
pie.setLabelLinkMargin(0.1);
pie.setLabelGap(0.1);
//设定显示格式(名称加百分比或数值)
// pie.setPercentFormatString("#,###0.0#%");
//设定百分比显示格式
pie.setBackgroundPaint(Color.white);
// pie.setSectionLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 12));
//设定背景透明度(0-1.0之间)
pie.setBackgroundAlpha(0.6f);
//设定前景透明度(0-1.0之间)
pie.setForegroundAlpha(0.90f);
org.jfree.chart.ChartPanel panel = new ChartPanel(chart);
panel.setPreferredSize(new Dimension(200,100));
javax.swing.JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setPreferredSize(new Dimension(400,150));
JOptionPane.showMessageDialog(null, scrollPane);
try {
ChartRenderingInfo info = new ChartRenderingInfo();
String url = "./";
pie.setURLGenerator(new StandardPieURLGenerator(url,"goods"));
java.io.OutputStream outStm = new java.io.FileOutputStream(
"c:/testPie.png");
ChartUtilities.writeChartAsPNG(outStm,
chart, 800, 450, info);
outStm.close();
StringWriter strWriter = new java.io.StringWriter();
PrintWriter w = new java.io.PrintWriter(strWriter);
ChartUtilities.writeImageMap(w, "mapName", info);
w.close();
strWriter.close();
System.out.println("Map=/n" + strWriter.getBuffer());
}
catch (IOException ex1) {
ex1.printStackTrace();
}
try {
Thread.sleep(50000);
}
catch (InterruptedException ex) {
}
System.exit(0);
}
}
另外要注意[IMG]中useMap属性的用法是[IMG src=".." useMap="#mapName"],不要掉了“#”号哦。
下图是运行结果 (乱码不要怪我,是这个Blog的原因)