我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java swing如何实现加载自定义的字体

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java swing如何实现加载自定义的字体

这篇文章主要介绍了java swing如何实现加载自定义的字体,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

java swing 加载自定义的字体

在实际开发中, 我们需要把字体的名字和字体做一一对应的映射关系, 然后需要通过可配置的方式加载自定义的字体. 所以就有了这个需求, 我们来实现。

首先我们定义一个自定义加载子类的工具类

import java.awt.Font;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;import java.util.Properties; public class FontUtil {          private static Map<String, String> fontNameMap = new HashMap<String, String>();         private static final float defaultFontSize = 20f;     static {        //加载配置文件        Properties properties = new Properties();        // 使用properties对象加载输入流, 编码使用GBK        try {            properties.load(new InputStreamReader(FontUtil.class.getClassLoader().getResourceAsStream("font.properties"), "GBK"));        } catch (IOException e) {            System.err.println("font.properties 配置文件不存在");        }        //获取key对应的value值        for (Map.Entry<Object, Object> entry : properties.entrySet()) {            Object key = entry.getKey();            Object value = entry.getValue();            if (key != null && value != null) {                fontNameMap.put(String.valueOf(key), String.valueOf(value));            }        }    }          public static Font getConfigFont(String key) {        return getConfigFont(key, defaultFontSize);    }          public static Font getConfigFont(String key, float fontSize) {        String fontUrl = fontNameMap.get(key);        if (fontUrl == null) {            throw new RuntimeException("名字是:" + key + "的字体配置不存在");        }        //默认先看是不是系统字体        Font font = new Font(fontUrl, Font.PLAIN, (int) fontSize);        //判断当前字体存不存在        if ("Dialog.plain".equals(font.getFontName())) {            try (                    InputStream is = new FileInputStream(new File(fontUrl));            ) {                Font definedFont = Font.createFont(Font.TRUETYPE_FONT, is);                //设置字体大小,float型                definedFont = definedFont.deriveFont(fontSize);                return definedFont;            } catch (Exception e) {                throw new RuntimeException("名字是:" + key + "的字体不存在");            }        }        return font;    }  }

第二部再就是写测试代码:

import java.awt.*; public class Demo {     public static void main(String[] args) throws Exception {                Font a = FontUtil.getConfigFont("A");        System.out.println(a.getName() + "~" + a.getSize());         Font b = FontUtil.getConfigFont("B", 100);        System.out.println(b.getName() + "~" + b.getSize());         Font c = FontUtil.getConfigFont("C");        System.out.println(c.getFontName());         Font d = FontUtil.getConfigFont("D");     }  }

运行, 第四个字体不存在, 抛出异常 , 其他的都正常处理了, A, B都加载了自己配置的字体.

环境配置, 在resources里面新建一个字体配置文件: font.properties 内容如下:

#字体的配置文件,等号前是字体名字,等号后是字体的路径 A=D:/logs/苹方黑体-准-简.ttf B=D:/logs/苹方黑体-中粗-简.ttf C=宋体 D=宋体22222

本来是帮别人写的代码, 最后不要了, 就直接开源出来了.

Java swing更改全局字体

这段代码在jframe显示前调用,比如main方法开始就调用:

public static void setUIFont(){ Font f = new Font("宋体",Font.PLAIN,18); String   names[]={ "Label", "CheckBox", "PopupMenu","MenuItem", "CheckBoxMenuItem",   "JRadioButtonMenuItem","ComboBox", "Button", "Tree", "ScrollPane",   "TabbedPane", "EditorPane", "TitledBorder", "Menu", "TextArea",   "OptionPane", "MenuBar", "ToolBar", "ToggleButton", "ToolTip",   "ProgressBar", "TableHeader", "Panel", "List", "ColorChooser",   "PasswordField","TextField", "Table", "Label", "Viewport",   "RadioButtonMenuItem","RadioButton", "DesktopPane", "InternalFrame" };  for (String item : names) {   UIManager.put(item+ ".font",f);  }}

感谢你能够认真阅读完这篇文章,希望小编分享的“java swing如何实现加载自定义的字体”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java swing如何实现加载自定义的字体

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java swing如何实现加载自定义的字体

这篇文章主要介绍了java swing如何实现加载自定义的字体,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java swing 加载自定义的字体在实际开发中, 我们需要把字
2023-06-25

java自定义类加载器如何实现类隔离

这篇文章主要介绍了java自定义类加载器如何实现类隔离问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-21

Android中自定义加载样式图片的具体实现

先让大家看看效果图吧,相信很多Android初学者都想知道这中效果是怎么实现的,来上图: 想实现上面这张图中的自定义加载样式,其实很简单,首先我们需要的布局组件有ProcessBar和TextView,下面是布局文件的代码(只是加载的页面的
2022-06-06

Java中如何自定义一个类加载器

这篇文章主要介绍了Java中如何自定义一个类加载器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-21

Android自定义Dialog实现文字动态加载效果

之前在技术问答上面看到一个提问 “加载中…” 后面三个点是动态的,这么一个效果实现。想来想去,好像没想到好的处理方式。 尝试了一下,以一个最笨的方式实现了。先来看一下效果 :我是通过自定义一个Dialog,加载中的效果,是在Dialog内
2022-06-06

Java怎么自定义类加载器实现类隔离

这篇“Java怎么自定义类加载器实现类隔离”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java怎么自定义类加载器实现类隔离
2023-07-05

Java通过自定义类加载器实现类隔离

类隔离是一种通过类加载器实现加载所需类的实现方式,使得不同版本类间隔离,避免了使用冲突问题。本文将通过自定义的类加载器实现类隔离,感兴趣的可以了解一下
2022-11-13

Java自定义类加载器实现类隔离详解

由于每种组件的不同版本所依赖的jar包不同,我们可以借鉴tomcat的实现方式,通过自定义类加载器打破双亲委派机制来实现类隔离,从而达到操作多组件多版本的目的。本文就来和大家详细聊聊实现方法
2023-03-02

java如何实现自定义zip包

java如何实现自定义zip包?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.配置pom.xml文件,添加build节点