33.5. <g:chart>

Chart构件是一个灵活的图形构件,根据chartType所指定的值,可以绘制Area、Bar等多种不同类型的图形,使用者可以在数种图形中变换而不必改动标签。

33.5.1. 构件信息

表 33.11. 构件信息

Component Typeorg.operamasks.faces.graph.Chart
Component Familyorg.operamasks.faces.graph.Chart
Component Classorg.operamasks.faces.component.graph.UIChart
Renderer Class(HTML_BASIC)org.operamasks.faces.render.graph.ChartRenderer
Tag Classorg.operamasks.faces.webapp.graph.ChartTag

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++org.operamasks.faces.component.graph.UIChart

33.5.2. 属性

表 33.12. 属性

backgroundAlpha 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Float)
是否必须 延时求值
指定数据表背景的透明度,属性值是一个0到1之间的小数
backgroundColor 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定图片背景色
backgroundImage 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定生成图片时用于填充背景的图片URL
backgroundImageAlpha 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Float)
是否必须 延时求值
指定背景图的透明度,属性值是一个0到1之间的小数
backgroundImagePosition 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(org.operamasks.faces.component.graph.PositionType)
是否必须 延时求值
指定背景图的位置,属性值必须是org.operamasks.faces.component.graph.PositionType类型的枚举值
binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
bottomMargin 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Double)
是否必须 延时求值
指定数据表与图片下边框之间的距离
chartType 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(org.operamasks.faces.component.graph.ChartType)
是否必须 延时求值
指定图形的类型,属性值必须是org.operamasks.faces.component.graph.ChartType的枚举值
colorPalette 定义类
类型 javax.el.ValueExpression(java.awt.Paint[])
是否必须 延时求值
指定一个实现了Paint接口的数组,而Paint接口定义Graphics2D是如何生成颜色样式的
drawItemLabel 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
指定是否显示数据值,默认值是false
drawOutline 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定是否显示图例的图标边框,默认值是true
effect3D 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定数据表是否以3D效果显示
foregroundAlpha 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Float)
是否必须 延时求值
指定数据表前景的透明度,属性值是一个0到1之间的小数
height 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(int)
是否必须 延时求值
指定生成图片的高度,默认值是370
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
init 定义类 org.operamasks.faces.component.graph.UIChart
类型 java.lang.String
是否必须 延时求值
指定一个方法,在图片初始化的时候调用
itemLabelColor 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定数据值的颜色
itemLabelFont 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定数据值的字体
leftMargin 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Double)
是否必须 延时求值
指定数据表与图片左边框之间的距离
orientation 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(org.operamasks.faces.component.graph.OrientationType)
是否必须 延时求值
指定数据表区图形显示的方向。属性值必须是:Horizontal或Vertical
outlineColor 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定图例的图标边框颜色
plotColor 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定数据表的背景色
plotImage 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
指定数据表的背景图片URL
plotImageAlpha 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Float)
是否必须 延时求值
指定数据表背景图片的透明度,属性值是一个0到1之间的小数
plotImagePosition 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(org.operamasks.faces.component.graph.PositionType)
是否必须 延时求值
指定数据表背景图片的位置,属性值必须是org.operamasks.faces.component.graph.PositionType类型的枚举值
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
rightMargin 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Double)
是否必须 延时求值
指定数据表与图片右边框之间的距离
showItemTips 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定当鼠标悬停在数据表的区域时,是否显示与鼠标停留位置X轴对应的数据值
showLegend 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(boolean)
是否必须 延时求值
指定图片是否显示图例,默认值是false
style 定义类
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件渲染时应用到构件的CSS风格,对应于元素的style属性
styleClass 定义类
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
空格分隔的CSS风格类名列表,渲染时作为元素的"class"属性
title 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
指定数据表的标题
topMargin 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.Double)
是否必须 延时求值
指定数据表与图片上边框之间的距离
width 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(int)
是否必须 延时求值
指定生成图片的宽度,默认值是600
xAxisLabel 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
指定X轴标签的内容
yAxisLabel 定义类 org.operamasks.faces.component.graph.UIChart
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
指定Y轴标签的内容

33.5.3. 构件API

33.5.3.1. ChartType(枚举类型)

表 33.13. 枚举成员

名称 说明
Area面积图
Bar条形图
Curve曲线图
CurveArea曲线面积图
Line折线图
Scatter散点图
Pie饼图
Radar雷达图

33.5.3.2. PositionType(枚举类型)

表 33.14. 枚举成员

名称 说明
Top图片位置居上
Bottom图片位置居下
Left图片位置居左
Right图片位置居右
TopLeft图片位置居左上
TopRight图片位置居右上
BottomLeft图片位置居左下
BottomRight图片位置居右下
LeftTop图片位置居左上
LeftBottom图片位置居左下
RightTop图片位置居右上
RightBottom图片位置居右下
Center图片位置居中
Stretch图片延展

33.5.4. 示例

以下的例子介绍了g:chart标签常用方法,在创建jsp页面之前,需要创建为数据表提供数据的托管Bean:

@ManagedBean(scope=ManagedBeanScope.SESSION) 
public class CategoryData extends ArrayDataModel { 
    public CategoryData() { 
    	this(20); 
    } 
    public CategoryData(int numRows) { 
    	super(createData(numRows)); 
    } 
    public void randomize() { 
    	setWrappedData(createData(20)); 
    } 
    private static CategoryDataItem[] createData(int numRows) { 
    	Random r = new Random(); 
    	CategoryDataItem[] data = new CategoryDataItem[numRows]; 
    	for (int i = 0; i < numRows; i++) { 
    		data[i] = new CategoryDataItem("Category " + (i+1), r.nextInt(10)+1, r.nextInt(10)+1, r.nextInt(10)+1); 
    	} 
    	return data; 
    } 
}

然后创建jsp页面,在这个页面定义了两个Chart构件,其中一个是面积图,另一个是条形图。下面是涉及g:chart标签的代码:

<!-- Area Chart -->
<g:chart title="Chart-Area Demo" xAxisLabel="Category"
    yAxisLabel="Value" showLegend="true" foregroundAlpha="0.5"
    chartType="Area">
    <g:dataSeries value="#{CategoryData}" var="x" rows="8">
        <g:dataLabel value="#{x.label}" />
        <g:dataItem legend="First" value="#{x.first}" />
        <g:dataItem legend="Second" value="#{x.second}" />
        <g:dataItem legend="Third" value="#{x.third}" />
    </g:dataSeries>
</g:chart>

<!-- Bar Chart -->
<g:chart title="Chart-Bar Demo" xAxisLabel="Category"
    yAxisLabel="Value" showLegend="true" foregroundAlpha="0.5"
    chartType="Bar">
    <g:dataSeries value="#{CategoryData}" var="x" rows="8">
        <g:dataLabel value="#{x.label}" />
        <g:dataItem legend="First" value="#{x.first}" />
        ......
    </g:dataSeries>
</g:chart>

运行效果如下: