JFreeChartは中国語の文字化けし解決方案を生成する

2479 ワード

詳細
JFreeChartを使ってグラフを生成する時、グラフの中の漢字は1つ1つの“口”で、正常に表示していないで、とても憂鬱で、インターネットで方案を探して、あるのはjarパッケージのバージョンの問題だと言って、jfreechart 1.0.10以降は文字化けしの問題があるので、1.0を使用することをお勧めします.10バージョンですが、新しいバージョンがある以上、なぜ使わないのかと思いますが、解決策が見つかりませんでした.以下の方法で解決できるし、フォントを柔軟に変えることもできるので、いいのではないでしょうか.

import java.awt.Font;
import java.io.File;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

/*
 *      
 */
public class Zhu {
	public static void main(String[] args) {
		try {
			//     ,      
			StandardChartTheme sct = new StandardChartTheme("CN");
			sct.setExtraLargeFont(new Font("  ", Font.LAYOUT_LEFT_TO_RIGHT, 15));
			sct.setRegularFont(new Font("  ", Font.LAYOUT_LEFT_TO_RIGHT, 15));
			sct.setLargeFont(new Font("  ", Font.LAYOUT_LEFT_TO_RIGHT, 15));

			ChartFactory.setChartTheme(sct);
			//     
			DefaultCategoryDataset dataset = new DefaultCategoryDataset();
			dataset.addValue(100, "       ", "   ");
			dataset.addValue(200, "       ", "   ");
			dataset.addValue(200, "       ", "   ");
			dataset.addValue(300, "       ", "   ");
			dataset.addValue(400, "       ", "   ");
			dataset.addValue(400, "       ", "   ");
			/*
			 * public static JFreeChart createBarChart3D( java.lang.String
			 * title,         java.lang.String categoryAxisLabel,         
			 * java.lang.String valueAxisLabel,         CategoryDataset dataset,
			 *      PlotOrientation orientation,         boolean legend,
			 *          boolean tooltips,           boolean urls)       url
			 */
			JFreeChart chart = ChartFactory.createBarChart3D("    ", "  ",
					"    ", dataset, PlotOrientation.VERTICAL, true, false,
					false);
			//     
			ChartUtilities.saveChartAsPNG(new File("E:/BarChart3D.png"),chart, 800, 500);
			System.out.println("    ");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}