﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-精彩的人生-随笔分类-BIRT</title><link>http://www.blogjava.net/hopeshared/category/27278.html</link><description>好好工作，好好生活</description><language>zh-cn</language><lastBuildDate>Mon, 12 Nov 2007 10:34:48 GMT</lastBuildDate><pubDate>Mon, 12 Nov 2007 10:34:48 GMT</pubDate><ttl>60</ttl><item><title>BIRT.CHART: 让Y轴标题动态修改</title><link>http://www.blogjava.net/hopeshared/archive/2007/11/12/159937.html</link><dc:creator>hopeshared</dc:creator><author>hopeshared</author><pubDate>Mon, 12 Nov 2007 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/hopeshared/archive/2007/11/12/159937.html</guid><wfw:comment>http://www.blogjava.net/hopeshared/comments/159937.html</wfw:comment><comments>http://www.blogjava.net/hopeshared/archive/2007/11/12/159937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hopeshared/comments/commentRss/159937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hopeshared/services/trackbacks/159937.html</trackback:ping><description><![CDATA[BIRT的chart功能似乎并不是很强大,反正在使用过程中,出现过编辑器不好使,被迫直接修改xml文件的情况.<br />
<br />
现在,有一个这样的需求,就是让Y轴的标题显示用户输入的值.<br />
<br />
<img height="476" alt="" src="http://www.blogjava.net/images/blogjava_net/hopeshared/title.JPG" width="683" border="0" /><br />
<br />
如图所示,这个标题是在编辑/定义图表的时候输入的固定值,这个值不管是改成params["test"]还是reportContext.getParameter("test")都会直接返回文本,而不是表达式值.<br />
<br />
但是,这个文本唯一支持的动态,就是本地化,那么本文将介绍如何利用resources.properties来实现这个标题的动态显示<br />
<br />
首先,设置这个chart的resource使用&lt;YOUR_LOCATION&gt;/reources.properties文件<br />
<br />
然后,在这个properties文件中输入test_field=Hopeshared's Test<br />
<br />
接着,修改这个title<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/hopeshared/title_2.JPG" border="0" /><br />
<br />
这个时候,preview的结果,title就会显示properties文件里的内容<br />
<br />
向report添加一个名为test的参数,这个参数是string类型,必填项,用户的输入将保存到properties文件并显示在chart中<br />
<br />
接着,写个脚本,让properties文件内容发生变化<br />
在整个report的initialize方法中,写入<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">importPackage(Packages.java.lang);<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />importPackage(Packages.java.util);<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />importPackage(Packages.java.io);<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />importPackage(Packages.java.net);<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;t_value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;params[</span><span style="color: #000000">"</span><span style="color: #000000">test</span><span style="color: #000000">"</span><span style="color: #000000">];<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;prop</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Properties();<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;in_stream</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;YOUR_PROPERTIES_FOLDER&gt;/resources.properties</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />prop.load(in_stream);<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />in_stream.close();<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />prop.put(</span><span style="color: #000000">"</span><span style="color: #000000">test_field</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;t_value);<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;fout</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;FileOutputStream(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;YOUR_PROPERTIES_FOLDER&gt;/resources.properties</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />prop.store(fout,</span><span style="color: #000000">"</span><span style="color: #000000">Test&nbsp;Properties</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />fout.close();<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;current&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;YOUR_PROPERTIES_FOLDER&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;cl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;URLClassLoader(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Array(current.toURL()));<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />res&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ResourceBundle.getBundle(</span><span style="color: #000000">"</span><span style="color: #000000">resource</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;Locale.getDefault(),&nbsp;cl);</span></div>
<br />
最后,preview一下,看看结果.<br />
<br />
欢迎大家告诉我其他更好的办法来达到这个目标,谢谢!
<img src ="http://www.blogjava.net/hopeshared/aggbug/159937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hopeshared/" target="_blank">hopeshared</a> 2007-11-12 13:20 <a href="http://www.blogjava.net/hopeshared/archive/2007/11/12/159937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>