import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.general.*;
import org.jfree.util.*;
import org.jfree.chart.title.*;
import java.awt.*;
public class PieChartDemo extends JFrame {
private static final long serialVersionUID = 1l;
//构造函数applicationTitle-窗口标题, chartTitle-报表标题
public PieChartDemo(String applicationTitle, String chartTitle) {
super(applicationTitle);//调用父类构造函数,设置窗口标题
PieDataset dataset = createDataset();//调用createDataset()方法,返回DefaultPieDataset对象
JFreeChart chart = createChart(dataset, chartTitle);//调用createDataset()方法,返回JFreeChart对象
ChartPanel chartPanel = new ChartPanel(chart);//一个Swing GUI component,用来显示JFreeChart
chartPanel.setPreferredSize(new java.awt.Dimension(510, 380));//设置组件尺寸
setContentPane(chartPanel);//设置 chartPanel 属性。此方法由构造方法调用。
}
private PieDataset createDataset() {
DefaultPieDataset result = new DefaultPieDataset();//创建一个DefaultPieDataset实例,Dataset是图表的容器
result.setValue("吃饭", 10);//Sets the data value for a key and
result.setValue("睡觉", 30);//sends a DatasetChangeEvent to all registered listeners.
result.setValue("上课", 20);//以上注释请自己翻译
result.setValue("逃课", 40);
return result;//返回DefaultPieDataset对象
}
private JFreeChart createChart(PieDataset dataset, String title) { JFreeChart chart = ChartFactory.createPieChart3D(title, dataset,
true,
true, false);//创建一个3D饼图
TextTitle textTitle = chart.getTitle();//获取图表的标题
textTitle.setFont(new Font("黑体", Font.PLAIN, 20));//设置图表的标题字体,避免产生乱码
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));//设置项目字体,避免产生乱码
PiePlot3D plot = (PiePlot3D) chart.getPlot();//获取图表区域对象
plot.setStartAngle(-30);//设置开始角度,默认的是90°
plot.setLabelFont(new Font("黑体", Font.PLAIN, 20));//设置标签字体,避免乱码
return chart;//返回JFreeChart对象
}
public static void main(String[] args) {
PieChartDemo demo=new PieChartDemo("饼图实例", "金哥的作息时间");//实例化
demo.pack();//awt的东东,你懂的
demo.setVisible(true);//同上
}
}