JavaFx 使用字体图标记录( 二 )


首先,是引用maven依赖
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>1.9</version></dependency>

  • StringEscapeUtils.unescapeJava() 将unicode形式的字符串转为unicode字体数据
  • StringEscapeUtils.escapeJava() 将unicode字体数据转为unicode形式的字符串,中文其实也算做unicode字体数据, 如中文的"我"得到的返回结果为\u6211 或者可以复制一些特殊表情也可以进行转换哦
使用如下代码所示:
//读取字体文件,第二个参数是字体大小Font font = Font.loadFont(getClass().getResourceAsStream("/ttf/iconfont.ttf"), 20.0);//某个图标的unicodeString unicode = "\\ue001";Text text = new Text();//设置字体和文字text.setFont(font);text.setText(StringEscapeUtils.unescapeJava(unicode));//这里根据情况输入填写,主要就是修改颜色和字体text.setStyle("-fx-font-size:20px;-fx-fill:red;");Kotlin在Kotlin中,和Java不同,我们可以直接把char类型当成字符串String类型,如下代码所示:
text {//第二个参数是字体大小font = loadFont("/font/iconfont.ttf", 25.0)!!//如果只有一个\,在Kotlin中就是字体数据text ="\ueDEF"style {fill = c("red")}}但是如果我们是动态读入的一个unicode数据,则是没法使用的,原因和上述说的一样,因为不是unicode字体数据,所以text控件会什么都不显示
text {font = loadFont("/font/iconfont.ttf", 25.0)!!//两个斜杠,需要调用方法转为unicode字体数据text = StringEscapeUtils.unescapeJava("\\ueDEF")style {fill = c("red")}}补充最后,上述也是提到了,我们解压出来的字体目录下有一份json文件,实际上,我们可以将此份json数据也放在项目文件夹里
在应用运行开始的时候读取,构建一个Map<String,String>,key为名称,而value则是unicode字体数据
之后我们需要用到的时候,可以直接根据名称从中拿去unicode字体数据直接显示
参考
  • Java实现字符串和unicode互转_HaHa_Sir的博客-CSDN博客_java转换unicode
【JavaFx 使用字体图标记录】

经验总结扩展阅读