有的时候你很希望显式的内容能够更丰富一些,例如不同的行具有不同的颜色,字体,不同的边框等等。这个就可以通过定义style 元素来实现。
关于style的dtd定义如下:(具体可以看
http://jasperreports.sourceforge.net/dtds/jasperreport.dtd)(不过好像有些小问题,浏览器质疑它的合法性)
<!ELEMENT style (conditionalStyle*)>
<!ATTLIST style
name CDATA #IMPLIED
isDefault (true | false) "false"
style CDATA #IMPLIED
mode (Opaque | Transparent) #IMPLIED
forecolor CDATA #IMPLIED
backcolor CDATA #IMPLIED
pen (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
fill (Solid) #IMPLIED
radius NMTOKEN #IMPLIED
scaleImage (Clip | FillFrame | RetainShape) #IMPLIED
hAlign (Left | Center | Right | Justified) #IMPLIED
vAlign (Top | Middle | Bottom) #IMPLIED
border (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
borderColor CDATA #IMPLIED
padding NMTOKEN #IMPLIED
topBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
topBorderColor CDATA #IMPLIED
topPadding NMTOKEN #IMPLIED
leftBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
leftBorderColor CDATA #IMPLIED
leftPadding NMTOKEN #IMPLIED
bottomBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
bottomBorderColor CDATA #IMPLIED
bottomPadding NMTOKEN #IMPLIED
rightBorder (None | Thin | 1Point | 2Point | 4Point | Dotted) #IMPLIED
rightBorderColor CDATA #IMPLIED
rightPadding NMTOKEN #IMPLIED
rotation (None | Left | Right | UpsideDown) #IMPLIED
lineSpacing (Single | 1_1_2 | Double) #IMPLIED
isStyledText (true | false) #IMPLIED
fontName CDATA #IMPLIED
fontSize NMTOKEN #IMPLIED
isBold (true | false) #IMPLIED
isItalic (true | false) #IMPLIED
isUnderline (true | false) #IMPLIED
isStrikeThrough (true | false) #IMPLIED
pdfFontName CDATA #IMPLIED
pdfEncoding CDATA #IMPLIED
isPdfEmbedded (true | false) #IMPLIED
pattern CDATA #IMPLIED
isBlankWhenNull (true | false) #IMPLIED
>
可以看到,大部分的元素其实都可以不需要定义.
通过dtd,可以看到,很多样的格式,比如为每个边框赋予不同的颜色,这样就可以让一个矩形框的四边都是不同的颜色(如果需要的话).
举例写个style如下:
<style
name="test_Font"
isDefault="true"
mode="Opaque"
forecolor="#FFFF00"
backcolor="#0000FF"
pen="Thin"
fill="Solid"
fontName="宋体"
fontSize="10"
isBold="false"
isItalic="false"
isUnderline="false"
isStrikeThrough="false"
pdfFontName="STSong-Light"
pdfEncoding="UniGB-UCS2-H (Chinese Simplified)"
isPdfEmbedded="false"
>
</style>
这是一个默认的style,如果在ireport界面,那么每个新放到页面上的元素(允许style)的都会设置style=test_Font,并能立即查看到效果。
需要什么效果,可以按照自己需求来定制。
还有一个问题:比如如何实现不同的行,有不同的背景颜色呢?
这个问题就需要用到有关 conditionalStyle的内容。
通过为Style元素指定conditionalStyle属性,可以控制什么时候才显式必要的Style,
还是以test_Font style为基础,新建立一个style 如下:
<style
name="back_Style"
isDefault="false"
style="test_Font"
>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]>
</conditionExpression>
<style
isDefault="false"
mode="Opaque"
backcolor="#FF0000"
isBold="true"
>
</style>
</conditionalStyle>
</style>
这个style ,如果你熟悉xml和style格式,可以直接编辑xml文件,否则就使用菜单“格式化-styles" 来操作(不同的版本菜单翻译的可能不太一样),我觉得用菜单操作也不错阿。
可以看到,"Style condition"中defualt是不能删除,其它的都可以调整,也就是说,只要需要,我们可以为一个style设置很多的样式条件,这样可以用许多的样式(颜色等格式)来显式数据行,譬如只要需要,我们可以用10中颜色来显式一个报表中的10行,每行一种颜色,每种颜色都不同。
添加查询select username from all_users;
预览结果如下图(按照需要实现颜色条的交替显式):