然後在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的原因)