前言
JFreeChart中的图形渲染器用于在绘制图形时对图表的样式设计,最终呈现效果与图形渲染器有很大关联.
一.CategoryDataset 图形
CategoryPlot提供方法setRenderer来指定图形渲染器:
public void setRenderer(CategoryItemRenderer renderer) {
setRenderer(0, renderer, true);
}
CategoryItemRenderer接口定义了所有渲染器必须提供的方法。如果要实现自定义渲染器,则应考虑扩展AbstractCategoryItemRenderer类
大多数渲染器属性使用“三层”方法定义。查找属性(例如,轮廓绘制outline paint))时,渲染器首先检查是否存在适用于渲染器绘制的所有项目的设置(在层0中)。如果有,则使用该设置,但如果它为null,则渲染器将查找下一层,其中包含属性的“每个系列(series)”设置(许多属性是基于每个系列定义的,因此这是一个层,即最常用的)。如果第1层设置为null,则渲染器将查找最后一层,该层提供默认或“基础(base)”设置。某些属性允许基本设置为null,而其他属性则强制执行非空值。
建议: 如果当我们知道具体的图形类型时可以更加细分到Render类型来定制图形渲染器
CategoryItemRenderer(interface)
StatisticalBarRenderer
AbstractCategoryItemRenderer(abstract class)
AreaRenderer
BarRenderer
BarRenderer3D
IntervalBarRenderer
GanttRenderer
LayeredBarRenderer
StackedBarRenderer
GroupedStackedBarRenderer
StatisticalBarRenderer
WaterfallBarRenderer
BoxAndWhiskerRenderer
CategoryStepRenderer
LevelRenderer
LineAndShapeRenderer
DefaultCategoryItemRenderer
LineRenderer3D
StatisticalLineAndShapeRenderer
MinMaxCategoryRenderer
ScatterRenderer
二.XYDataset图形
XYPlot提供setRenderer方法来支持设置渲染器
public void setRenderer(XYItemRenderer renderer) {
setRenderer(0, renderer);
}
XYItemRenderer接口用于在XYPlot上呈现单个(x,y)上的图形渲染,为了支持克隆图表,建议渲染器同时实现Cloneable和PublicCloneable接口。
XYItemRenderer结构如下:
三.PieDataset图形
不支持渲染器设置Renderer.
四.自定义图形渲染器
通常我们可以使用系统默认的图形渲染器进行功能开发既可,但是有时候有更高级的定制化需求时候,这需要我们自己来自定义图形渲染器了.
比如: 当我需要将柱状图的峰值显示成如下效果的时候,我们可以使用如下代码: