9.3 图区属性

9.3.1 概述

JFreeChart类在绘制图表时,将大部分工作交给了Plot类(图形绘制结构)或Plot的子类。JFreeChart类的getPlot()方法返回了一个图表创建的图区(plot)的引用。

Plot plot = jfreechart.getPlot();

我们需要将该引用转化成Plot的一个具体子类。例如:

CategoryPlot plot = jfreechart.getCategoryPlot();

XYPlot plot = jfreechart.getXYPlot();

注意:如果plot不是相应的类,则在转化的时候,会抛出ClassCastException类型转制异常。

9.3.2 图区子类

那么我们如何知道我们图表使用的Plot是那个子类呢?作为使用JFreeChart的经验,分清那些图表使用CategoryPlot和那些图表使用XYPlot是非常清晰的。如果还怀疑,看一下ChartFactory类的源代码就会明白每个类型的图表是如何放在一起的。

9.3.3 设置图区背景颜色

我们可以使用方法setBackgroundPaint()设置图区的背景颜色。例如:

Plot plot = jfreechart.getPlot();
plot.setBackgroundPaint(Color.white);

我们可使用Paint接口的任何实现作为背景颜色的设置参数,其中有Color、GradientPaint(渐变颜色)和TexturePaint等。同时,我们也可以设置背景颜色为null。

9.3.4 设置背景图片

我们可以使用方法setBackgroundImage()为图区设置备有图片。

Plot plot = jfreechart.getPlot();
plot.setBackgroundImage(JFreeChart.INFO.getLogo());

默认的,图片充满图表的整个背景,图片失真。但我们可以改变图片不充满整个背景,使用方法是setBackgroundImageAlignment()。

plot.setBackgroundImageAlignment(Align.BOTTOM_RIGHT);

使用setBackgroundImageAlpha()方法,我们可以控制图片的透明度。如果我们希望图片充满这个图表区域,那么我们需要将背景图片添加到JFreeChart对象上(前面已经介绍过)。