jfreechart 1.0.12中文无法正常 我在一个Java文件中利用jfreechart生成一个报表并存在一个图片中,但是应该出现中文的地方都显示为方框。不知道怎么解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 附源码如下:public class BarChartDemo { public static void main(String[] args) throws IOException{ CategoryDataset dataset = getDataSet2(); JFreeChart chart = ChartFactory.createBarChart3D( "Fruit product", // 图表标题 "水果", // 目录轴的显示标签 "产量", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); FileOutputStream fos_jpg = null; try { fos_jpg = new FileOutputStream("D:\\fruit.gif"); ChartUtilities.writeChartAsJPEG(fos_jpg,1,chart,400,300,null); } finally { try { fos_jpg.close(); } catch (Exception e) {} } } /** * 获取一个演示用的组合数据集对象 * @return */ private static CategoryDataset getDataSet2() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "北京", "苹果"); dataset.addValue(100, "上海", "苹果"); dataset.addValue(100, "广州", "苹果"); dataset.addValue(200, "北京", "梨子"); dataset.addValue(200, "上海", "梨子"); dataset.addValue(200, "广州", "梨子"); dataset.addValue(300, "北京", "葡萄"); dataset.addValue(300, "上海", "葡萄"); dataset.addValue(300, "广州", "葡萄"); dataset.addValue(400, "北京", "香蕉"); dataset.addValue(400, "上海", "香蕉"); dataset.addValue(400, "广州", "香蕉"); dataset.addValue(500, "北京", "荔枝"); dataset.addValue(500, "上海", "荔枝"); dataset.addValue(500, "广州", "荔枝"); return dataset; } 我引用的包import java.io.FileOutputStream;import java.io.IOException;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.PlotOrientation;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset; 试试这个import java.awt.Font;Font font = new Font("宋体", Font.BOLD, 16); txtTitle.setFont(font); jc.getLegend().setItemFont(font);红色的部分根据你的报表里要显示中文的地方设置一下字体 import org.jfree.chart.title.TextTitle;import java.awt.Font; CategoryDataset dataset = getDataSet2();JFreeChart chart = ChartFactory.createBarChart3D( "Fruit product", // 图表标题 "水果", // 目录轴的显示标签 "产量", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); Font font = new Font("宋体", Font.BOLD, 16); TextTitle txtTitle = chart.getTitle(); txtTitle.setFont(font); PiePlot pieplot = (PiePlot)chart.getPlot();//这里你照着你所要导出的图形类别替换一下PiePlot试试pieplot.setLabelFont(font); chart.getLegend().setItemFont(font); LZ我不知道你自己有没有在网上好好搜搜这个问题的原因网上有不少解决这个问题的讨论不妨多看一下多试一下 不应该吧我没有碰到过这种问题,我的用法就是上面设置font。其实网上的解决办法都差不多1.版本问题,这个你试着低版本没有问题码?2.就是上面要加font设置3.操作系统问题,这个LZ可能没有涉及其实个人认为这个也不至于无解啊 sorry,zhangpeixv 你的办法是可行的,我用的时候没有用对,现在标题和表示颜色的部分都已经正常显示中文了,但是横轴和纵轴两个方向上的仍然是方框,我试了半天还没有找到相关属性,不过非常感谢你的回答,谢谢! plot.getDomainAxis().setLabelFont(font);//设置横坐标说明的字体plot.getDomainAxis().setTickLabelFont(font);//设置横坐标字体plot.getRangeAxis().setLabelFont(font);//设置纵坐标说明的字体此外,源码是最全的了类似设置的问题,一般的话看源码都能找到线索的 java se 不知道错哪里? 实现自动计算会员折扣 Java基础知识疑惑 有个需求不知道怎么写效率高点!关于按需对数组排序。不知道怎么做效率高点啊? java字符串中英文分离(探讨字符串处理) 急啊,请问这几个类需要附加哪些包和资源 关于Socket编程中超时处理的问题困惑,请大家近来帮帮忙! JAVAICQ 关于CoreJava卷1中有关事件的疑惑,请大虾关注 帮帮初学者:为什么在WIN2000Server的命令提示符下输入javac welcome.java不对? 关于 string lenth SQL 代码单元 的问题 用SWT做界面锁定的问题
{
public static void main(String[] args) throws IOException{
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"Fruit product", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.gif");
ChartUtilities.writeChartAsJPEG(fos_jpg,1,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的组合数据集对象
* @return
*/
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
import java.io.IOException;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.Font;Font font = new Font("宋体", Font.BOLD, 16);
txtTitle.setFont(font);
jc.getLegend().setItemFont(font);
红色的部分根据你的报表里要显示中文的地方设置一下字体
import org.jfree.chart.title.TextTitle;
import java.awt.Font;
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"Fruit product", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
Font font = new Font("宋体", Font.BOLD, 16);
TextTitle txtTitle = chart.getTitle();
txtTitle.setFont(font);
PiePlot pieplot = (PiePlot)chart.getPlot();//这里你照着你所要导出的图形类别替换一下PiePlot试试
pieplot.setLabelFont(font);
chart.getLegend().setItemFont(font);
LZ我不知道你自己有没有在网上好好搜搜这个问题的原因
网上有不少解决这个问题的讨论
不妨多看一下多试一下
我没有碰到过这种问题,我的用法就是上面设置font。
其实网上的解决办法都差不多
1.版本问题,这个你试着低版本没有问题码?
2.就是上面要加font设置
3.操作系统问题,这个LZ可能没有涉及
其实个人认为这个也不至于无解啊
plot.getDomainAxis().setTickLabelFont(font);//设置横坐标字体
plot.getRangeAxis().setLabelFont(font);//设置纵坐标说明的字体
此外,源码是最全的了
类似设置的问题,一般的话看源码都能找到线索的