Jrobin图表字体问题
程序员文章站
2022-03-02 14:37:37
...
Jrobin图表显示存在的中文乱码问题可通过手动设置字体来解决。
下面是我写的生成和读取jrobin图表的简单例子:
其中设置字体的代码为:
解释:
monospaced,是一种逻辑字体,它在不同语言的操作系统下会映射为不同的物理字体,一般英文操作系统会把monospaced映射为Courier New,显示代码很好看,然而来到中文的操作系统时就被映射到宋体上了。修改的方法如下: 1。 进入到JDK_HOME/jre/lib目录,备份fontconfig.properties.src文件; 2。 打开fontconfig.properties.src,找到这一行:sequence.monospaced.GBK=chinese-ms936, alphabetic, dingbats, symbol 可在这里重新设置你喜欢的字体。
下面是我写的生成和读取jrobin图表的简单例子:
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import org.jrobin.core.RrdDb;
import org.jrobin.core.RrdDef;
import org.jrobin.core.RrdException;
import org.jrobin.core.Sample;
import org.jrobin.core.Util;
import org.jrobin.graph.RrdGraph;
import org.jrobin.graph.RrdGraphDef;
public class create {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long end = Util.getTime(), start = end - 7 * 86400; // 截至时间为当前时间,起始时间为一周前
String rrdFile = "demo.rrd";
// 创建数据文件定义,保存日数据与周数据
try {
RrdDef rrdDef = new RrdDef(rrdFile, start - 1, 300); // 数据间隔为300秒
rrdDef
.addDatasource("value1", "GAUGE", 600, Double.NaN,
Double.NaN); // 定义数据源,可以定义多个
rrdDef
.addDatasource("value2", "GAUGE", 800, Double.NaN,
Double.NaN);
// 以下定义归档数据,即如何保存数据
rrdDef.addArchive("AVERAGE", 0.5, 1, 288); // 输入给数据源的数据每一个都保存下来,保存288笔数据,即保存最近一天的数据
rrdDef.addArchive("AVERAGE", 0.5, 7, 288); // 每7笔数据,取平均值,然后保存,保存288笔数据,即保存最近一周的数据
RrdDb rrdDb = new RrdDb(rrdDef);
// 采用三角函数生成数据
for (long t = start; t < end; t += 300) {
Sample sample = rrdDb.createSample(t);
sample.setValue("value1",
Math.sin(2 * Math.PI * (t / 86400.0)) * 50 + 50);
sample.setValue("value2", 60);
sample.update();
}
String pngFile = "";
RrdGraphDef gDef = null;
// 生成最近一天的图形
pngFile = "demoday.png";
gDef = new RrdGraphDef();
gDef.setFilename(pngFile);
gDef.setWidth(450);
gDef.setHeight(250);
gDef.setImageFormat("png");
gDef.setTimeSpan(end - 86400, end);
gDef.setTitle("JRobin Demo 每天");
gDef.datasource("demo1", rrdFile, "value2", "AVERAGE");
gDef.line("demo1", Color.blue, "阀值");
gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
gDef.line("demo", Color.GREEN, "real");
gDef.gprint("demo", "MIN", "%5.1lf Min");
gDef.gprint("demo", "AVERAGE", "%5.1lf Avg");
gDef.gprint("demo", "MAX", "%5.1lf Max");
gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));
new RrdGraph(gDef);
// 生成最近一周的图形
pngFile = "demoweek.png";
gDef = new RrdGraphDef();
gDef.setFilename(pngFile);
gDef.setWidth(450);
gDef.setHeight(250);
gDef.setImageFormat("png");
gDef.setTimeSpan(end - 7 * 86400, end);
gDef.setTitle("JRobin Demo 我的");
gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
gDef.line("demo", Color.GREEN, "real");
gDef.gprint("demo", "MIN", "%5.1lf Min");
gDef.gprint("demo", "AVERAGE", "%5.1lf Avg");
gDef.gprint("demo", "MAX", "%5.1lf Max");
// 如果需要显示中文,以下两条语句比较重要
gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));
new RrdGraph(gDef);
} catch (RrdException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 根据数据定义创建数据文件
}
}
其中设置字体的代码为:
gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 11));
gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 14));
解释:
monospaced,是一种逻辑字体,它在不同语言的操作系统下会映射为不同的物理字体,一般英文操作系统会把monospaced映射为Courier New,显示代码很好看,然而来到中文的操作系统时就被映射到宋体上了。修改的方法如下: 1。 进入到JDK_HOME/jre/lib目录,备份fontconfig.properties.src文件; 2。 打开fontconfig.properties.src,找到这一行:sequence.monospaced.GBK=chinese-ms936, alphabetic, dingbats, symbol 可在这里重新设置你喜欢的字体。
上一篇: Spring2.5 注释驱动的IoC功能
下一篇: Spring2.5中基于注释的IoC
推荐阅读
-
iOS WKWebView加载HTML字体大小问题
-
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
-
浅谈pc端rem字体设置的问题
-
详解iOS 关于字体根据不同屏幕尺寸等比适配的问题
-
Xcode8下iOS10常见报错闪退,字体适配和编译不过的问题及解决方案
-
详解iOS 关于字体根据不同屏幕尺寸等比适配的问题
-
iOS10 App适配权限 Push Notifications 字体Frame 遇到的问题
-
Xcode8下iOS10常见报错闪退,字体适配和编译不过的问题及解决方案
-
iOS10 App适配权限 Push Notifications 字体Frame 遇到的问题
-
解决启用辅助功能选项导致网页字体颜色显示不正常问题