软件版本问题,jfreechart-1.0.10有人说没有问题,但jfreechart-1.0.11到13都有问题,我用的最新的jfreechart-1.0.13不做设置是有问题的。
究其原因,是它代码的内部设置的字体有问题.
先来跟踪一下它的代码:
JFreeChart chart = ChartFactory.createBarChart(
"数据统计图",
"设备号",
"积累值",
dataset,
PlotOrientation.VERTICAL,
true, true, false
);
它的原型
public static JFreeChart createBarChart(String title,
String categoryAxisLabel,
String valueAxisLabel,
CategoryDataset dataset,
PlotOrientation orientation,
boolean legend,
boolean tooltips,
boolean urls) {
上面的原型又调用了
JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT,
plot, legend);
currentTheme.apply(chart);
看看缺省字体的定义:
public static final Font DEFAULT_TITLE_FONT
= new Font("SansSerif", Font.BOLD, 18);
看看当前主题currentTheme是什么
private static ChartTheme currentTheme = new StandardChartTheme("JFree");
看它的原型定义
public StandardChartTheme(String name) {
if (name == null) {
throw new IllegalArgumentException("Null 'name' argument.");
}
this.name = name;
this.extraLargeFont = new Font("Tahoma", Font.BOLD, 20);
this.largeFont = new Font("Tahoma", Font.BOLD, 14);
this.regularFont = new Font("Tahoma", Font.PLAIN, 12);
this.smallFont = new Font("Tahoma", Font.PLAIN, 10);
……
看到了吧,默认的标题字体是SansSerif,在很多中文系统中是没有这种字体的,这可能是用老外开发开源产品的弊端吧。
首先说标题的乱码吧:
public JFreeChart(String title, Font titleFont, Plot plot,
boolean createLegend) {
……
对标题设置的代码:
if (title != null) {
if (titleFont == null) {
titleFont = DEFAULT_TITLE_FONT;
}
this.title = new TextTitle(title, titleFont);
this.title.addChangeListener(this);
}
它使用了默认字体,因此要解决这个问题只要,对标题重新设置字体就可以了。
……
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体", Font.PLAIN, 20));
图例和其它乱码一样处理,更换字体。
CategoryPlot plot = chart.getCategoryPlot();//获得图表区域对象
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setVisible(true);
plot.setDomainAxis(domainAxis);
ValueAxis rAxis = plot.getRangeAxis();
/*------设置X轴坐标上的文字-----------*/
domainAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
/*------设置X轴的标题文字------------*/
domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,15));
/*------设置Y轴坐标上的文字-----------*/
rAxis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));
/*------设置Y轴的标题文字------------*/
rAxis.setLabelFont(new Font("黑体",Font.PLAIN,15));
这里需要注意的是,哪里出现了乱码就修改哪里的字体,将字体转换为系统有的就可以了.
上 边 是 柱 状 图 , 以 下 为 饼 图
//定义字体格式
Font font = new Font("微软雅黑", Font.CENTER_BASELINE, 12);
//定义图片标题
TextTitle title = new TextTitle("Pie状图");
//设置标题的格式
title.setFont(font);
//把标题设置到图片里面
jfreechart.setTitle(title);
//设置字体,非常关键不然会出现乱码的,下方的字体
jfreechart.getLegend().setItemFont(font);
//Pie图的字体
piePlot.setLabelFont(font);
1. CategoryAxis domainAxis = plot.getDomainAxis();
2.
3. // NumberAxis valueAxis=(NumberAxis) plot.getRangeAxis();
4. //有人说这个是水平方向设置的 方法。
5. ValueAxis numberaxis = plot.getRangeAxis();
6.
7. /*------设置X轴坐标上的文字-----------*/
8. domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
9.
10. /*------设置X轴的标题文字------------*/
11. domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
12.
13. /*------设置Y轴坐标上的文字-----------*/
14. numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
15.
16. /*------设置Y轴的标题文字------------*/
17. numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
18.
19. /*------这句代码解决了底部汉字乱码的问题-----------*/
20. jfreechart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
分享到:
相关推荐
这个特定的版本,被称为“JFreeChart无中文乱码版本”,特别优化了解决在处理中文字符时可能出现的乱码问题,使得在中文环境下使用JFreeChart变得更加友好。 JFreeChart支持多种类型的图表,包括但不限于柱状图、...
同时,新版本可能修复了一些已知的问题,提高了图表渲染的准确性和效率。 使用JFreeChart的基本流程包括以下几个步骤: 1. 创建ChartFactory:首先,你需要选择一个合适的图表类型,并使用对应的ChartFactory方法来...
在JFreeChart的早期版本中,由于默认的字体集可能不支持中文字符,因此在处理包含中文的数据时,可能会出现乱码现象。为了解决这个问题,我们需要采取以下步骤: 1. 设置合适的字体:JFreeChart允许我们自定义图表...
喜欢的拿去,有java环境的可以直接运行,java环境不用我在这里讲了吧。
Linux下JFreechart中文乱码的解决.docx
这个1.0.8a 版本是最新的更新,提供了改进的性能、新特性以及对先前版本的修复。在这一版本中,用户可以期待更稳定和功能丰富的体验。 **源码分析** JFreeChart 的源码是完全开放的,这为开发者提供了深入理解图表...
JFreeChart乱码解决方法 - 企业应用 - Java
解决JFreeChart乱码问题的基本思路是修改图表的各个组成部分(如标题、坐标轴、图例等)的字体设置,确保它们使用支持中文的字体。以下是一些关键的类和接口,以及如何使用它们来解决乱码问题: 1. **数据源...
在Linux环境下,使用Java的JFreeChart库生成图表时,可能会遇到一个问题,即图表中的文本出现乱码。这是因为JFreeChart默认使用的字体可能在Linux系统中不被支持,或者编码设置不正确。解决这个问题的关键在于引入...
在使用JFreeChart库生成图表时,可能会遇到中文乱码的问题,这主要是因为JFreeChart默认的字体不支持中文显示。解决这个问题的关键在于为图表的各个部分(如标题、轴标签、图例等)设置合适的中文支持字体。下面将...
标题和描述中的"最新版本jfreechart(包括API和jar包)"指的是这个压缩包包含JFreeChart的最新稳定版本1.0.13,以及相关的API文档和可执行的jar包。 JFreeChart的核心功能在于生成各种类型的图表,如柱状图、饼图、...
在Linux环境下,使用JFreeChart库进行图表生成时,可能会遇到中文乱码的问题。这是因为JFreeChart默认使用的是西方字符集,不支持中文显示。本文将深入探讨如何解决这一问题,确保在Linux系统中,JFreeChart能正确地...
标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...
这是一款专为Linux设计的中文字体,包含了大量汉字,可以有效地解决JFreeChart在Linux环境下的中文乱码问题。将“zysong.ttf”字体文件添加到系统中,可以让JFreeChart在绘制图表时能够正确渲染中文字符。 在Java...
在Linux环境下使用JFreeChart库绘制图表时,可能会遇到中文乱码的问题。JFreeChart是一个强大的Java库,它提供了一套完整的解决方案来创建各种图表,如饼图、柱状图、线图等。然而,由于编码问题,当图表中包含中文...
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件、Web应用程序或Applets中轻松创建高质量的图表。这个"JFreeChart最新版"压缩包包含了库的核心文件、源代码以及两本中文使用教程,为Java开发...
JFreeChart-1.0.13原文件含jar包。 1、JFreeChart生成图片路径教程 2、JFreeChart使用教程(含下载安装,超详细) 3、JFreeChart使用详细教程 ...5、JFreeChart乱码解决方法 等等 包括许多优秀案例
通过以上步骤,你应该能够成功解决JFreeChart在Linux服务器上生成图片时的中文乱码问题。值得注意的是,这种方法不仅适用于JFreeChart,还适用于其他依赖于Java运行环境显示中文字符的程序。在实际操作中,应根据...
### jfreechart乱码问题详解 #### 一、问题背景 在使用jFreeChart进行图表绘制时,可能会遇到中文乱码的问题。这个问题主要是由于jFreeChart默认使用的字体不支持中文字符,导致在图表中显示的中文无法正常识别,...
标题中的“jfreechart在LINUX下乱码问题的解决”指的是在Linux操作系统中使用JFreeChart库时遇到的字符编码问题。JFreeChart是一个Java库,用于创建各种图表,如饼图、柱状图、线图等。在处理中文字符时,如果系统...