18
回答
JFreeChart 中文乱码
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我做的一个多饼图,每个饼下的乱码怎么处理,求高人指点

举报
牛海朋
发帖于7年前 18回/3K+阅
共有18个答案 最后回答: 3年前
import java.awt.Font;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class Test3 {
 public Test3() {
 }

 public static void main(String[] args) {
  DefaultPieDataset dpd = new DefaultPieDataset();
  dpd.setValue("管理人员", 25);
  dpd.setValue("市场人员", 25);
  dpd.setValue("开发人员", 45);
  dpd.setValue("其他人员", 5);

  // Create JFreeChart object
  // 参数可以查看源码

  JFreeChart chart = ChartFactory.createPieChart("公司组织架构图", dpd, true,
    true, false);
  Font font = new Font("SimSun", 10, 20);
  TextTitle txtTitle = null;
  txtTitle = chart.getTitle();
  txtTitle.setFont(font);
  PiePlot pieplot = (PiePlot)chart.getPlot();
        pieplot.setLabelFont(font);  
  chart.getLegend().setItemFont(font);
  ChartFrame pieFrame = new ChartFrame("公司组织架构图", chart);
  pieFrame.pack();
  pieFrame.setFont(font);
  pieFrame.setVisible(true);
 }
} 

引用来自#4楼“suan2046”的帖子

好像和 版本有点关系吧, @红薯 用的JFreeChart 是什么版本的?

N年没用jfreechart了。

引用来自#3楼“红薯”的帖子

import java.awt.Font;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

public class Test3 {
 public Test3() {
 }

 public static void main(String[] args) {
  DefaultPieDataset dpd = new DefaultPieDataset();
  dpd.setValue("管理人员", 25);
  dpd.setValue("市场人员", 25);
  dpd.setValue("开发人员", 45);
  dpd.setValue("其他人员", 5);

  // Create JFreeChart object
  // 参数可以查看源码

  JFreeChart chart = ChartFactory.createPieChart("公司组织架构图", dpd, true,
    true, false);
  Font font = new Font("SimSun", 10, 20);
  TextTitle txtTitle = null;
  txtTitle = chart.getTitle();
  txtTitle.setFont(font);
  PiePlot pieplot = (PiePlot)chart.getPlot();
        pieplot.setLabelFont(font);  
  chart.getLegend().setItemFont(font);
  ChartFrame pieFrame = new ChartFrame("公司组织架构图", chart);
  pieFrame.pack();
  pieFrame.setFont(font);
  pieFrame.setVisible(true);
 }
} 

 不好意思,你说这个我知道的,那是对一个饼的操作,我是用CategoryDataset构造的MultiplePieChart

关键的问题在字体的设置:

Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null; 
txtTitle = chart.getTitle();
txtTitle.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot(); pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);

引用来自#7楼“红薯”的帖子

关键的问题在字体的设置:

Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null; 
txtTitle = chart.getTitle();
txtTitle.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot(); pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);

 我QQ329620302给你们看图片就知道怎么回事了

引用来自#8楼“牛海朋”的帖子

引用来自#7楼“红薯”的帖子

关键的问题在字体的设置:

Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null; 
txtTitle = chart.getTitle();
txtTitle.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot(); pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);

 我QQ329620302给你们看图片就知道怎么回事了

图片可以直接贴出来啊

引用来自#9楼“红薯”的帖子

引用来自#8楼“牛海朋”的帖子

引用来自#7楼“红薯”的帖子

关键的问题在字体的设置:

Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null; 
txtTitle = chart.getTitle();
txtTitle.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot(); pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);

 我QQ329620302给你们看图片就知道怎么回事了

图片可以直接贴出来啊

 看见了吗,2006后面其实是“年”,但显示乱码

饿  JFreeChart的好像1.0.10的版本是对中文支持最好的,1.0.12的就算设置的字体貌似中文还是会乱码~

但是1.0.13没测试就不清楚了

推荐用openflashchart吧,那个效果比jfreechart好,而且是无关后台的

顶部