JFreeChart 解决中文乱码

由于JFreeChart组件的版本、操作平台、JDK的设置等因素,在使用JFreeChart组件时可能会出现中文乱码的现象。遇到此问题时,可通过设置文字的字体来解决问题。在此提供以下两种解决此问题的方法。

[b]一、设置主题的样式(强烈推荐)[/b]

在制图前,创建主题样式并制定样式中的字体,通过ChartFactory的setChartTheme()方法设置主题样式。

//创建主题样式
StandardChartTheme standardChartTheme=new StandardChartTheme("CN");

//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20));

//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15));

//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15));

//应用主题样式
ChartFactory.setChartTheme(standardChartTheme);


[b]二、制定乱码文字的字体[/b]

JFreeChart是用户使用该库提供的各类图标的统一接口,JFreeChart主要由三个部分构成:title(标题),legend(图释),plot(图表主体)。三个部分设置字体的方法分别如下:


[b]1.标题:[/b]

freeChart.getTitle().setFont(new Font("黑体", Font.BOLD, 20));

TextTitle textTitle = freeChart.getTitle();
textTitle.setFont(new Font("黑体",Font.BOLD,20));


[b]2.图释:[/b]

LegendTitle legend = freeChart.getLegend();
if (legend!=null)
{
legend.setItemFont(new Font("宋体", Font.BOLD, 20));
}


[b]3.图表主体:[/b]

对于不同类型的图表对应Plot的不同的实现类,设置字体的方法也不完全相同。


[b]曲线图:[/b]

CategoryAxis valueAxis = plot.getDomainAxis();

// 设置x轴上面的字体
valueAxis.setTickLabelFont(new Font("隶书", Font.ITALIC, 12));

// 设置X轴的标题文字
valueAxis.setLabelFont(new Font("隶书", Font.ITALIC, 12));
NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();

// 设置y轴上的字体
numberAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 13));

// 设置y轴上的标题字体
numberAxis.setLabelFont(new Font("宋体", Font.PLAIN, 13));


[b]饼图:[/b]

chart.getTitle().setFont(new Font("黑体", Font.BOLD, 20));
PiePlot piePlot = (PiePlot) chart.getPlot();
piePlot.setLabelFont(new Font("黑体", Font.BOLD, 10));
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 10));


[b]柱形图:[/b]

CategoryAxis domainAxis = plot.getDomainAxis();

// 设置水平底部列表
domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 14));

// 设置水平底部标题
domainAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));

// 设置锤子标题
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 18));

// 设置说明的字体
chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 18));
chart.getTitle().setFont(new Font("黑体", Font.BOLD, 20));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值