用java写有关JFreeChart乱码的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java写有关JFreeChart乱码的问题相关的知识,希望对你有一定的参考价值。
package com.JFreeChart;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.Plot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class JFreeChart1
private static final Font CHART_TITLE_TITLE=new Font("斜体",Font.PLAIN,22);
// private static final Font CHART_TITLE_ITEM=new Font("宋体",Font.PLAIN,22);
//生成饼图数据集对象
public PieDataset creatFreeChart()
DefaultPieDataset defaultpiedataset =new DefaultPieDataset();
defaultpiedataset.setValue("管理人员",20);
defaultpiedataset.setValue("研发人员",20);
defaultpiedataset.setValue("销售人员",20);
defaultpiedataset.setValue("asda",20);
defaultpiedataset.setValue("OEM人员",20);
return defaultpiedataset;
//生成图表主对象JFreeChart
public JFreeChart creatChart(PieDataset piedataset)
JFreeChart jfreechart=ChartFactory.createPieChart("公司组织架构图", piedataset, true, true, true);
jfreechart.getTitle().setFont(CHART_TITLE_TITLE);
PiePlot pieplot=(PiePlot) jfreechart.getPlot();
pieplot.setNoDataMessage("没信息没数据");
pieplot.setCircular(false);
pieplot.setLabelFont(CHART_TITLE_TITLE);
// jfreechart.getLegend().setItemFont(CHART_TITLE_ITEM);
return jfreechart;
package com.JFreeChart;
import java.awt.Font;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.title.LegendTitle;
public class JFreeChart2
private static final Font CHART_TITLE_ITEM=new Font("宋体",Font.PLAIN,22);
public static void main(String[] args)
JFreeChart1 j=new JFreeChart1();
JFreeChart jfreechart= j.creatChart(j.creatFreeChart());
jfreechart.getLegend().setItemFont(CHART_TITLE_ITEM);
ChartFrame frame=new ChartFrame("aaaa",j.creatChart(j.creatFreeChart()));
frame.pack();
frame.setVisible(true);
为什么在类JFreeChart2 里面写jfreechart.getLegend().setItemFont(CHART_TITLE_ITEM);就会出现乱码,而在类JFreeChart1里面写就不会。求帮忙
JFreechart在linux下不显示及中文乱码问题
一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库提供......
一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉,
原因是jfreechart的在linux系统中需要访问java awt库提供的图形功能,而linux下的绝大多数版本的java awt类库都需要x server提供的一些功能。而基本上作服务器的系统都没有启动x server(甚至根本没安装)。
报错如下:
X connection to localhost:11.0 broken (explicit kill or server shutdown).
我解决方法如下:
vi /etc/profile
在最后加上 : export CATALINA_OPTS=‘-Djava.awt.headless=true‘
例如:
Java代码
1.mysqlhome=/usr/local/mysql
2.PATH=$PATH:$mysqlhome/bin:$PATH
3.export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
4.export CATALINA_OPTS=‘-Djava.awt.headless=true‘
mysqlhome=/usr/local/mysql
PATH=$PATH:$mysqlhome/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
export CATALINA_OPTS=‘-Djava.awt.headless=true‘二.中文乱码问题
jfreechart报表在linux下中文乱码问题,因为jdk缺少中文字库造成的,解决方法就是加上字库 ,以下方法针对1.6可以生效1.5未测试。
1.确认%JavaHome%/jre/lib/fonts目录下存在zysong.ttf simsun.ttf(这个是windows下C:/WINDOWS/simsun.ttc改名而来的)
2.在%JavaHome%/jre/lib/fonts目录下执行"ttmkfdir -o fonts.dir"命令,重新生成fonts.dir文件
3.确认/usr/share/fonts/zh_CN/TrueType目录存在,如果不存在则mkdir创建
4.确认/usr/share/fonts/zh_CN/TrueType目录下存在zysong.ttf simsun.ttf
5.在%JavaHome%/jre/lib目录下,执行 cp fontconfig.RedHat.3.properties.src fontconfig.properties
6.重新启动tomcat,大功告成!
注:有的系统可能不需要simsun.ttf字体
如何支持带中文的图像
问题描述:
用户数量图、资金占比图等使用jfreechart开发的图像,中文显示为乱码
问题原因:
Linux上的jdk6(jre)本身不支持中文。
问题解决:
1)把XP下的字体C:\WINDOWS\FONTS\simsun.ttc(也就是宋体,大小为10M),把他重命名为 simsun.ttf。
2)拷贝simsun.ttf 字体到 /usr/share/fonts/zh_CN/TrueType/ 下
3)在linux命令行下执行:
fc-cache /usr/share/fonts/zh_CN/TrueType/ 字体安装完成了,就可以使用这个字体
程序中解决方案:
font =new Font("宋体",Font.PLAIN,12);
chart.setTitle(new TextTitle("",font.deriveFont(14f)));
CategoryPlot plot = (CategoryPlot)chart.getPlot();
CategoryAxis categoryAxis = plot.getDomainAxis();
categoryAxis.setTickLabelFont(font.deriveFont(12f));
categoryAxis.setLabelFont(font.deriveFont(12f));
//categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
//设置角度
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
numberAxis.setLabelFont(font.deriveFont(12f));
numberAxis.setTickLabelFont(font.deriveFont(12f));
//plot.set
chart.getTitle().setFont(font.deriveFont(14f)); // 设置标题字体
//chart.getLegend().setItemFont(font);// 设置图例类别字体
LegendTitle legendTitle = chart.getLegend(0);
if (legendTitle != null){
legendTitle.setItemFont(font.deriveFont(12f));
}
以上是关于用java写有关JFreeChart乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章