问题描述
正在学习jfreechart, 测试了一个饼图,标题部分中文显示正确, 但是里面的内容是乱码,请问还需要设置什么啊? 我用的是Myeclipse5.1.1GA, Jfreechart用的是-1.0.13。文件是用UTF-8编译的。 import java.awt.Font;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartFrame;import org.jfree.chart.JFreeChart;import org.jfree.chart.title.TextTitle;import org.jfree.data.general.DefaultPieDataset;public class JfreeChartTest {public static void main(String[] args) {DefaultPieDataset dfp = new DefaultPieDataset();dfp.setValue("这里乱码", 25);dfp.setValue("bb", 35);dfp.setValue("ccc", 20);dfp.setValue("ddd", 5);dfp.setValue("eee", 15);JFreeChart a = ChartFactory.createPieChart("CityInfoPort֯" dfp,true, true, true);a.setTitle(new TextTitle("测试", new Font("黑体", Font.BOLD, 20)));ChartFrame frame = new ChartFrame("CityInfoPort你好啊", a, true);frame.setFont(new Font("宋体", Font.PLAIN, 12));frame.pack();frame.setVisible(true);}} 问题补充:我已经解决了,谢谢你的答复。分就跟你了。<br />解决方案如下:<br />在创建之前,重设了它的theme<br />方案来源:<br />http://greatghoul.iteye.com/blog/639396<br /><br /><br />StandardChartTheme theme = new StandardChartTheme("unicode") {<br />public void apply(JFreeChart chart) {<br />chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,<br />RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);<br />super.apply(chart);<br />}<br />};<br />theme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 20));<br />theme.setLargeFont(new Font("宋体", Font.PLAIN, 14));<br />theme.setRegularFont(new Font("宋体", Font.PLAIN, 12));<br />theme.setSmallFont(new Font("宋体", Font.PLAIN, 10));<br />ChartFactory.setChartTheme(theme);
解决方案
中文直接这么写是会出现乱码,因为我之前也碰到过,你需要把中文转译成unicode码,比如:一月:u4E00u6708二月:u4E8Cu6708今天:u4ECAu5929你可以下载一个转成unicode码的工具。