您的位置:首页 > 编程语言 > Java开发

解决:FreeChart图形中文乱码问题

2017-08-28 21:22 218 查看
在使用FreeChart作图时,如果直接使用中文,会导致出现乱码,原因在于FreeChart为外国文所写,其默认字体并不包含中文。

以简单的饼状图为例。

首先看没有进行中文字体处理的效果:

package SWing;

import javax.swing.JFrame;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

class FreeChartDemo{
private PieDataset getPieDataset(){
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("高中生", 800);
dataset.setValue("本科生", 300);
dataset.setValue("研究生", 200);
dataset.setValue("博士生", 100);
return dataset;
}
public JFreeChart getFreeChart(){
PieDataset dataset = getPieDataset();
JFreeChart freeChart = ChartFactory.createPieChart("学位授予", dataset, true, true, false);
return freeChart;
}
}
public class PieChart {

public static void main(String[] args) {
FreeChartDemo freeChartDemo = new FreeChartDemo();
JFreeChart chart = freeChartDemo.getFreeChart();
ChartFrame frame = new ChartFrame("饼状图", chart);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}




再来看看进行处理后的效果:

package SWing;

import java.awt.Font;

import javax.swing.JFrame;

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

class FreeChartDemo{
private PieDataset getPieDataset(){
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("高中生", 800);
dataset.setValue("本科生", 300);
dataset.setValue("研究生", 200);
dataset.setValue("博士生", 100);
return dataset;
}
public JFreeChart getFreeChart(){
PieDataset dataset = getPieDataset();
JFreeChart freeChart = ChartFactory.createPieChart("学位授予", dataset, true, true, false);
return freeChart;
}
//在此处设置字体
public void setPieChartFont(JFreeChart freeChart){
PiePlot pieChart = (PiePlot) freeChart.getPlot();
pieChart.setLabelFont(new Font("宋体", Font.BOLD, 20));
TextTitle textTitle = freeChart.getTitle();
textTitle.setFont(new Font("宋体", Font.ITALIC, 25));
LegendTitle legendTitle = freeChart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.BOLD+Font.ITALIC, 10));
}
}
public class PieChart {

public static void main(String[] args) {
FreeChartDemo freeChartDemo = new FreeChartDemo();
JFreeChart chart = freeChartDemo.getFreeChart();
freeChartDemo.setPieChartFont(chart);
ChartFrame frame = new ChartFrame("饼状图", chart);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java