![零基础学Struts](https://wfqqreader-1252317822.image.myqcloud.com/cover/999/602999/b_602999.jpg)
11.2 JFreeChart进阶
前面介绍了如何使用JFreeChart生成饼图,开发者还可以通过其他配置来改进生成的统计图表,如显示图例、显示工具提示、显示3D饼图、设置图表标题字体、设置图例字体以及设置图表的标签字体以及透明度等。
11.2.1 显示图例
ChartFactory类中的createPieChart()接受5个参数,其中第二个参数用来指定是否显示图例。如果设置其参数值为true,就可以显示图例,代码如下所示。
// 使用工厂类创建饼图 JFreeChart chart = ChartFactory.createPieChart( "学校职称人员统计图", dpd, true, false, false);
运行该Java程序就可以看到生成包含图例的饼图,如图11.6所示。
11.2.2 显示工具提示
ChartFactory类中的createPieChart()接受5个参数,其中第三个参数用来指定是否显示工具提示。如果设置其参数值为true,就可以显示工具提示,代码如下所示。
// 使用工厂类创建饼图 JFreeChart chart = ChartFactory.createPieChart( "学校职称人员统计图", dpd, true, true, false);
运行该Java程序就可以看到生成的饼图。当把光标移到饼图上时,显示工具提示,如图11.7所示。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0333_0001.jpg?sign=1739322927-DlYii1Q1thb4pjn34H7dCHP5GmfoCXtN-0-8f0efe8c5b85e388d9781543f4a9712a)
图11.6 包含图例的饼图
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0333_0002.jpg?sign=1739322927-GprhIKme8MOnN8WSEAysrbfW0r6MeDAR-0-1a84b7676f62ae99698cb31ec98696fd)
图11.7 包含工具提示的饼图
11.2.3 显示3D的饼图
通过调用ChartFactory的createPieChart3D()方法,就可以创建一个3D的饼图,代码如下所示。
// 使用工厂类创建饼图 JFreeChart chart = ChartFactory.createPieChart3D( "学校职称人员统计图", dpd, true, true, false);
运行该Java程序就可以看到生成的3D饼图,如图11.8所示。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0333_0003.jpg?sign=1739322927-uPTzX3pUgPeRXgHXD84oC4yZGfKWav99-0-41f6efce25aa7fe8bf14adb364bb1a39)
图11.8 3D饼图
11.2.4 设置图表标题字体
通过调用JFreeChart实例的setTitle()方法可以用来设置图表标题以及标题字体等。这里设置图表标题为“学校职称人员统计图”,字体为宋体并加粗和倾斜,字体大小为20,代码如下所示。
//设置图标标题字体 chart.setTitle(new TextTitle("学校职称人员统计图", new Font("宋体", Font.BOLD + Font.ITALIC,20)));
运行该Java程序,可以看到图标的标题字体已经发生改变,如图11.9所示。
11.2.5 设置图例字体
通过调用JFreeChart实例的getLegend()方法可以获得图表中的图例。通过调用图例的setItemFont()来设置图例的字体。这里设置图例字体为黑体并加粗,字体大小为15,代码如下所示。
//取得图表的图例 LegendTitle lt = chart.getLegend(); //修改图例的字体 lt.setItemFont(new Font("黑体", Font.BOLD,15));
运行该Java程序,可以看到图例的字体已经发生改变,如图11.10所示。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0334_0001.jpg?sign=1739322927-m81aTByxaMoIY1N5dWtltJ82Npjtzx0M-0-d1503b2f55657ce64d2f0b8ce037187d)
图11.9 设置图表标题字体
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0334_0002.jpg?sign=1739322927-m0g5SUbCGr6UAA0rtwfTD28VqztOk90g-0-681980ebf1fa7931e9878468587fc1c0)
图11.10 设置图例字体
11.2.6 设置图表的标签字体以及透明度
通过调用JFreeChart实例的getPlot()方法可以获得实际图表实例。通过调用其图表实例的setLabelFont()方法设置图表中标签的字体,setBackgroundAlpha()方法用来设置图表的背景透明度,setForegroundAlpha()方法用来设置图表的前景透明度。这里设置图表中标签的字体为微软雅黑黑体并倾斜,字体大小为30,并设置图表的背景透明度和前景透明度分别为0.98f和0.50f,代码如下所示。
//获得图表的Plot对象 PiePlot piePlot = (PiePlot) chart.getPlot(); //设置图表中标签的字体 piePlot.setLabelFont(new Font("微软雅黑", Font.ITALIC,30)); //设置图表的背景透明度 piePlot.setBackgroundAlpha(0.98f); //设置图表的前景透明度 piePlot.setForegroundAlpha(0.50f);
运行该Java程序,可以看到图表的标签字体以及透明度发生了改变,如图11.11所示。
![](https://epubservercos.yuewen.com/58F6E3/3590816703512601/epubprivate/OEBPS/Images/figure_0335_0001.jpg?sign=1739322927-c4woPi1IZGLAI5brT03kqJxaHcdnDXIr-0-d426c7643bd040ebf0efd0125d752d08)
图11.11 设置图表的标签字体以及透明度