首页 > 其他分享 >jfreechart中文无法显示的问题

jfreechart中文无法显示的问题

时间:2023-09-16 23:02:18浏览次数:35  
标签:中文 15 chart dataset addValue jfreechart 无法 schools Font

jfreechart是一个开源免费的Java图表工具。

一个简单的入门例子:

package plot;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
 
public class Example {
	public static void main(String[] args) {
 
		// 创建数据
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(15, "schools", "1970");
		dataset.addValue(30, "schools", "1980");
		dataset.addValue(60, "schools", "1990");
		dataset.addValue(120, "schools", "2000");
		dataset.addValue(240, "schools", "2010");
		dataset.addValue(300, "schools", "2020");
		dataset.addValue(320, "schools", "2022");
 
		// 创建JFreeChart对象
		JFreeChart chart = ChartFactory.createLineChart(
				"Example", // 图标题
				"Year", // x轴标题
				"Schools Count", // y轴标题
				dataset, //数据集
				PlotOrientation.VERTICAL, //图表方向
				false, true, false);
 
 
		// 利用awt进行显示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
 
}

英文显示是没问题,但如果想使用中文就会有乱码了。

如下图:

jfreechart中文无法显示的问题_java

为了解决这个问题,可以通过设置字体的方法:


TextTitle textTitle = chart.getTitle();
        textTitle.setFont(getFont(Font.BOLD,15));

        CategoryPlot plot=chart.getCategoryPlot();
        CategoryAxis domainAxis=plot.getDomainAxis();
        domainAxis.setLabelFont(getFont(Font.BOLD,15));
        domainAxis.setTickLabelFont(getFont(Font.BOLD,15));
        ValueAxis valueAxis=plot.getRangeAxis();
        valueAxis.setLabelFont(getFont(Font.BOLD,15));
/**
     *************************************************************************
     * JFreeChartHandler.java——initFontFile<br>
     * Author: karrychang<br>
     * Date: 2018/3/15<br>
     * Description:<br>
     * Used in:<br>
     * @param
     * @return
     *************************************************************************
     */
    private static void initFontFile() {
        if (file == null) {
            URL url = App.class.getClassLoader().getResource("liukai.ttf");
            System.out.println(url);
            String vPath = url.getPath();
            file = new File(vPath);
        }
    }

    /**
     *************************************************************************
     * JFreeChartHandler.java——getFont<br>
     * Author: karrychang<br>
     * Date: 2018/3/15<br>
     * Description:<br>
     * Used in:<br>
     * @param style
     * @param size
     * @return
     *************************************************************************
     */
    private static Font getFont(int style, int size) {

        try {
            initFontFile();
            if (file == null || !file.exists()) {
                return defFont;
            }
            Font nf = Font.createFont(Font.TRUETYPE_FONT, file);
            nf = nf.deriveFont(style, size);
            return nf;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return defFont;
    }

就可以解决jfreechart中文无法显示的问题了。

标签:中文,15,chart,dataset,addValue,jfreechart,无法,schools,Font
From: https://blog.51cto.com/u_15590807/7496842

相关文章

  • k8s之认证文件失效,导致kubelet无法正常启动
     报错:failedtorunKubelet:unabletoloadbootstrapkubeconfig:stat/etc/kubernetes/bootstrap-kubelet.conf:nosuchfileordirectory解决:#备份并重新生成证书cd/etc/kubernetes/pki/mkdirbackupmvapiserver.crtapiserver-etcd-client.keyapiserver-kub......
  • 修改pip配置文件pip.ini显示权限不足,无法写入时该如何解决
    如题,尝试修改pip配置pip3configsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple时出现如下报错: WritingtoC:\ProgramFiles\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\pip.iniERROR:Unabletosaveconfigura......
  • AnyCAD程序无法启动的问题解决方法
    在某些电脑上会出现基于AnyCAD开发的程序无法启动的问题,如:System-ArgumentEcception:Pleasecheckthedependendes解决方法安装最新的VS运行时库,如VS2022:微软官方下载地址:x64:vc_redist.x64.exeSystem.AccessViolationException:"Attemptedtoreadorwriteprotected......
  • WebSocket无法注入属性
    踩坑一:原因:是因为Spring对象的创建都是以单例模式创建的,在启动时只创建一次WebSocket。而WebSocketServer在每个连接请求到来时,都会new一个对象。所以当你启动项目时,你想要注入的对象已经注入进去,但是当用户连接是,新创建的websocket对象没有你要注入的对象,所以会报NullPointerEx......
  • 帝国CMS 7.5编辑器从WORD中粘贴过来无法保留格式和图片的解决办法
     1.配置过滤js文件 首先打开 \e\admin\ecmseditor\infoeditor\plugins\pastefromword\filter\default.js 在文件的最后部分又如下代码(修改前的代码),也可以搜索CKEDITOR.cleanWord进行定位。 修改前: CKEDITOR.cleanWord=function(a,c){       CKEDITOR......
  • 无法使用Android studio解决方法(AMD处理器)
    无法使用Androidstudio解决方法前提:你的电脑是AMD处理器,想使用Androidstudio,自己的电脑系统是win10家庭版,在百度找到勾选hyper-v就能用,然后发现在自己的电脑上面找不到,又要去BIOS界面里面更改配置发现也不行,这些坑我都踩过。。。。那请你接着往下看当初刚上大一对于电脑硬件有......
  • Dn下载Dn软件2022最新中文下载安装激活教程 各个版本下载
    adobedn全称也叫做adobedimension,这是一款旨在于向创意设计师提供逼真的3D效果设计工具,作为adobe公司旗下的产品,它可以与该公司很多产品一起配合使用,比如与Photoshop配合使用以帮助您可视化设计,还可以与Illustrator、Aero项目等等。adobedn有着易于使用的界面,启动它时首先将会呈......
  • Python stomp 发送消息无法显示文本
    我们向消息服务器通过stomp发送的是文本消息。当消息服务器发送成功后,消息服务器上的文本没有显示,显示的是2进制的数据。  如上图,消息没有作为文本来显示。问题和解决消息服务器是如何判断发送的小时是文本还是二进制的。根据官方的说,Stomp如设置了content-leng......
  • sqlserver存储过程报错:当前事务无法提交,而且无法支持写入日志文件的操作。请回滚该事
    ​ ​编辑 现象:系统出现异常,手动执行过程提示如上。  问题排查:1.直接执行的过程事务挂起(排除)2.重启数据库实例(重启后无效)3.过程中套用过程,套用的过程中使用事务,因为插入的表结构字段超出最大长度(修改表结构问题恢复) 结论:事务执行失败,嵌套层级太深。  ​......
  • Loadrunner发生请求的body中文实际是乱码的解决方法
    Loadrunner发生的json请求中,包含有中文。回放脚本,实际发送出去的body不是中文,而是乱码,这就导致请求不正确,影响测试的实际结果。要解决这个问题,先要把中文使用函数lr_convert_string_encoding转换一下,再在请求中引用该转换后的参数,回放的请求数据正常。示例如下:lr_convert_str......