JFreeChart Hacking-补丁贴
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 Hacking-补丁贴相关推荐
- 报表应用系列——图表JFreeChart: 第 4 章 折线图
双击代码全选 1 2 3 4 5 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100 ...
- Java项目:学生考勤管理系统(java+SSM+Poi导出+Easyui+JFreeChart+maven+mysql)
源码获取:博客首页 "资源" 里下载! 这个项目适合SSM框架的初学者(涉及大量增删改查,很适合初学者)以及对Shiro安全框架和Poi技术感兴趣的同学. 项目功能: 用户管理功能 ...
- I.MX6 bq27441 driver hacking
/************************************************************************** I.MX6 bq27441 driver hac ...
- jfreechart的使用
jfreechart 简介(百度百科): JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets ...
- Open Flash Chart组件的使用 及 与 jfreechart, FusionCharts 的比较
http://crabdave.javaeye.com/blog/189653 Open Flash Chart组件的使用 简介 OpenFlashChart是一个开源的报表制作组件,该组件能够自动生 ...
- I.MX6 ar1020 SPI device driver hacking
/************************************************************************************* I.MX6 ar1020 ...
- Shared——The best front-end hacking cheatsheets — all in one place.
原文地址:https://medium.freecodecamp.org/modern-frontend-hacking-cheatsheets-df9c2566c72a The best front ...
- Qt 控制watchdog app hacking
/*************************************************************************** Qt 控制watchdog app hacki ...
- linux watchdog demo hacking
/*********************************************************************** linux watchdog demo hacking ...
最新文章
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明...
- Ubuntu18.04下安装MySQL
- 权威公布:彻底搞清楚哪些笔记本和台式机主板能够支持42mm SATA M.2 NGFF(2242)接口的固态硬盘!!!...
- 【Windows工具】QuickLook-3.6.11 安装并设置开机自启动(含较难下载的 QuickLook-3.6.11 安装包百度云盘资源)
- Django框架(21.Django中设置cookie以及获取cookie)
- 实用Python库,这几个你认识不?
- css过度效果 从无到有,求教,对于CSS3 transition和transform实现的一个特效原理不是太明白?...
- 面向对象、继承、多态、封装、匿名内部类的基本知识点复习总结
- java nbsp_引用了实体 nbsp
- sqlserver备份还原丢失dbo_编程实现备份和还原数据库_sqlserver
- 关于UML 画图工具EA 在linux下的安装和界面配置
- 安卓手机修改host
- vue获取微信登陆权限_vue微信授权登录
- Postman使用详解
- 【离散数学】单射、满射、双射、映射的合成与逆映射
- 私域经营中KOT、KOL、KOC 理解
- ESP32远程OTA指令升级bin固件
- 瑞萨RL78系列单片机报内存溢出故障的解决过程。RA78K0R error E3206: Segment ‘@@CODEL‘ can‘t allocate to memory - ignored
- 解析grant connect, resource to user语句
- layui镜像站 lh_yun.gitee.io/layui
热门文章
- AForge.Video.FFMPEG库使用注意事项
- Win7共享无线 实现iPad 2 WiFi上网
- 关于根轨迹对于控制系统的一点理解
- 你是要搞敏捷吗?教你挑选试点团队的盖世绝招
- android 点击查看大图_你是不是遇到,在花瓣网部分图片详情页,点击“放大镜”无法预览高清大图?...
- AI-人工智能学习线路图
- 一分钟搞懂精度,错误率、查准率、查全率
- GPU 编程与CG 语言之阳春白雪下里巴人——CG学习读书笔记之数学函数(之一)。
- Matlab读取和显示图像
- jsch session(ssh)