分享
 
 
 

JFreeChart Hacking

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

JFreeChart Hacking

<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16>

JFreeChart 是什么?我就不再重复介绍了,网上文章大把...

官方主页:http://www.jfree.org/jfreechart/index.html

<--本文以jfreechart-1.0.0-pre2版本为基准-->

那么为什么要Hacking JFreeChart呢?

罪状一:中文Label显示模糊;

罪状二:无简体中文LocalizationBundle.properties文件;

罪状三:向下兼容性不好,官方说jdk1.2+,其实是jdk1.4+;

兼容问题A:另存菜单输出PNG文件只能运行于jdk1.4+;

兼容问题B:另存菜单不能输出JPEG格式图片;

兼容问题C:jdk1.3-环境下中文ToolTips不能正常显示;

如果一定要加一条罪状的话:目前开源免费的chart项目无出其右;

十分感谢JFreeChart开发者的辛苦努力!虽然它现在还不完美。

Ok,下面为Hacking做一些准备工作...

1.下载jfreechart-1.0.0-pre2.zip解压;

2.将\解压目录\source\下的源码加入任意project并配置jdk&lib;

3.安装一个有批量文件查询/替换功能的工具,比如UtralEdit;

<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16>

Hacking Begin

1.解决中文Label显示模糊问题

原因分析:JFreeChart默认字体对中文的支持不完善;

解决步骤:搜索\解压目录\source\下含有"new Font("的文件;

发现JFreeChart默认字体为

"foo"

"Serif"

"Dialog"

"SansSerif"

"Bitstream Vera Sans"

批量替换他们为任意中文字体(推荐"黑体");

当然你也可以把字体写入properties文件,

但这里介绍的是最简单的方法;

然后重新编译你修改过的文件,Ok,搞定!

2.无简体中文LocalizationBundle.properties文件

org\jfree\chart\LocalizationBundle.properties

主要用来显示右键功能菜单的文字,下面我们来汉化:

注意:LocalizationBundle.properties的编码不是Unicode,

简体中文要用GBK编码。

获得GBK编码的方法是:

cd ***\j2sdk1.*.*\bin

native2ascii -encoding GBK 1.txt 2.txt

注:1.txt放中文文本,2.txt输出GBK编码。

# org.jfree.chart.ChartPanel ResourceBundle properties file

#

# Changes (from 31-Aug-2003)

# --------------------------

# 31-Aug-2003 : Initial version (AL);

# 16-May-2005 : Add GBK version (FinalBone);

# 16-May-2005 : Add JPG_Image_Files (FinalBone);

#---------------EN---------------#

#Auto_Range=Auto Range

#All_Axes=Both Axes

#Chart_Properties=Chart Properties

#Copy=Copy

#Print...=Print...

#Save_as...=Save as...

#Properties...=Properties...

#PNG_Image_Files=PNG Image Files

#JPG_Image_Files=JPG Image Files

#Domain_Axis=Domain Axis

#Range_Axis=Range Axis

#Zoom_In=Zoom In

#Zoom_Out=Zoom Out

#---------------GBK---------------#

Auto_Range=\u81ea\u52a8\u8c03\u6574

All_Axes=\u6240\u6709\u5750\u6807\u8f74

Chart_Properties=\u56fe\u8868\u5c5e\u6027

Copy=\u590d\u5236

Print...=\u6253\u5370...

Save_as...=\u53e6\u5b58\u4e3a...

Properties...=\u5c5e\u6027...

PNG_Image_Files=PNG\u56fe\u50cf

JPG_Image_Files=JPG\u56fe\u50cf

Domain_Axis=\u57df\u5750\u6807\u8f74

Range_Axis=\u503c\u5750\u6807\u8f74

Zoom_In=\u653e\u5927

Zoom_Out=\u7f29\u5c0f

另外还有两个同名文件,希望大家有时间也汉化一下。

org\jfree\chart\ui\LocalizationBundle.properties

org\jfree\chart\plot\LocalizationBundle.properties

3.兼容性问题

a.PNG输出问题 b.无JPEG输出菜单

原因分析:javax.imageio.ImageIO这个类只有jdk1.4+才有。

解决步骤:1.打开org.jfree.chart.ChartPanel,

查看doSaveAs()方法,了解其结构;

2.改写doSaveAs()方法,重新编译;

3.如果运行环境是jdk1.3-

打开org.jfree.chart.encoders.SunPNGEncoderAdapter

注释掉javax.imageio.ImageIO,重新编译。

/**

* Updated by FinalBone 2005-5-16 PNG --> JPEG

*

* Opens a file chooser and gives the user an opportunity

* to save the chart in JPEG format.

*

* @throws IOException if there is an I/O error.

*/

public void doSaveAs() throws IOException {

JFileChooser fileChooser = new JFileChooser();

ExtensionFileFilter filter = new ExtensionFileFilter(

localizationResources.getString("JPG_Image_Files"), ".jpg"

);

fileChooser.addChoosableFileFilter(filter);

int option = fileChooser.showSaveDialog(this);

if (option == JFileChooser.APPROVE_OPTION) {

String filename = fileChooser.getSelectedFile().getPath();

if (isEnforceFileExtensions()) {

if (!filename.endsWith(".jpg")) {

filename = filename + ".jpg";

}

}

ChartUtilities.saveChartAsJPEG(

new File(filename), this.chart, getWidth(), getHeight()

);

}

}

c.中文ToolTips不能正常显示(显示为小方框)

原因分析:相关字体找不到。

解决步骤:1.打开org.jfree.chart.block.LabelBlock

查看其构造函数public LabelBlock(String label);

2.修改构造函数的字体定义,重新编译。

/**

* Creates a new label block.

*

* @param label the label.

*/

public LabelBlock(String label) {

/**

* Updated by FinalBone 2005-05-16

* "Bitstream Vera Sans" --> "黑体"

* For Chinese-Simplified ToolTips

* JDK 1.3- Environment

*/

this(label, new Font("黑体", Font.PLAIN, 11));

}

Hacking End

<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16>

这时的 JFreeChart 才是真正jdk1.2+兼容,完美支持中文。

希望下一版本的 JFreeChart 的字体定义写入properties文件,

并且不同路经下的properties文件最好不要重名。

本人接触 JFreeChart 刚刚几天,错漏难免,请多多指正!

<本文允许任意转载,请注明出处!最后一块骨头.2005-05-16>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有