iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java swing 实现加载自定义的字体
  • 368
分享到

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

2024-04-02 19:04:59 368人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录java swing 加载自定义的字体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); 
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java swing 实现加载自定义的字体

本文链接: http://www.lsjlt.com/news/157121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • java swing 实现加载自定义的字体
    目录java swing 加载自定义的字体Java swing更改全局字体java swing 加载自定义的字体 在实际开发中, 我们需要把字体的名字和字体做一一对应的映射关系, 然...
    99+
    2024-04-02
  • java swing如何实现加载自定义的字体
    这篇文章主要介绍了java swing如何实现加载自定义的字体,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java swing 加载自定义的字体在实际开发中, 我们需要把字...
    99+
    2023-06-25
  • 用Java实现春联 支持自定义字体颜色
    最近看到一篇 Python代码写春联的文章,什么?!Python能搞,我Java这么牛逼的语言,必须得搞!以彰显我大java的威武,和无所不能!!! 首先找到一张春联背景图案(抱歉,...
    99+
    2024-04-02
  • ReactNative中添加自定义字体的方法
    目录添加字体定义 assets 目录执行 link 命令在样式中使用字体示例在 React Native 中,如何添加自定义字体呢?React Native 提供了便捷的命令行工具来...
    99+
    2022-11-13
    React Native自定义字体 React Native字体
  • java自定义类加载器如何实现类隔离
    目录自定义类加载器准备通过URLClassLoader来实现【推荐】通过继承ClassLoader实现网上java自定义类加载器很多容易找到,但是都是加载的单个类,如果被加载的类,有...
    99+
    2022-11-21
    java类隔离 自定义类加载器 java类加载器
  • Java自定义类加载器实现类隔离详解
    目录一、背景二、解决思路2.1 创建依赖所在目录2.2 定义操作接口2.3 编写并构建业务包2.4 自定义类加载器2.5 主流程步骤三、总结一、背景 某服务需要连接操作多种组件(每种...
    99+
    2023-03-02
    Java类加载器实现类隔离 Java类加载器 类隔离 Java类加载器 Java 类隔离
  • Java怎么自定义类加载器实现类隔离
    这篇“Java怎么自定义类加载器实现类隔离”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java怎么自定义类加载器实现类隔离...
    99+
    2023-07-05
  • Java通过自定义类加载器实现类隔离
    目录前言类隔离是什么使用场景解决方案重写findClass重写loadClass总结前言 由于微服务的快速迭代、持续集成等特性,越来越多的团队更倾向于它。但是也体现出了一些问题,比如...
    99+
    2022-11-13
    Java 类加载器 类隔离 Java 类加载器 Java 类隔离
  • java类加载器怎么自定义
    要自定义Java类加载器,可以继承ClassLoader类,并重写它的findClass()方法。下面是一个简单的示例:```jav...
    99+
    2023-09-14
    java
  • java怎么自定义类加载器
    要自定义类加载器,可以按照以下步骤进行:1. 创建一个类,继承自java.lang.ClassLoader类,覆盖其中的findCl...
    99+
    2023-09-14
    java
  • CSS如何使用下载自定义字体
    这篇文章主要介绍了CSS如何使用下载自定义字体,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 假设要设置本身想要的字体,法子是有的,须要下...
    99+
    2024-04-02
  • 怎么在Linux上添加自定义字体
    本篇内容主要讲解“怎么在Linux上添加自定义字体”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Linux上添加自定义字体”吧!  觉得Linux系统默认字体不好看,想换个风格?想增加系统...
    99+
    2023-06-13
  • PyCharm怎样设置自定义字体_PyCharm设置自定义字体的方法
    首先,我们pycharm软件中找到他的自定义字体。 然后,我们可以爸这个命令进行打开。 此时,我们就能在这里设置他的字体。 于是,我们可以在这里下拉选择字体。 那么,我们还能设置...
    99+
    2024-05-10
    pycharm
  • Java基础之自定义类加载器
    目录一、类加载器关系二、基于本地class文件的自定义类加载器三、遇到的问题四、基于网络(url)class文件的自定义类加载器一、类加载器关系 自定义类加载器 创建一个类继承C...
    99+
    2024-04-02
  • Android自定义WaveProgressView实现水波纹加载需求
    先看效果图:  你可以定义成你项目的logo图片,可以设置水波颜色、波长、波宽、字体大小、颜色、进度条的最大值,当前进度值,还可以设置波纹震动的快慢。当设置一个进度不变的时候,打开时还有一个动画填满的效果(比如第二个流量显示,这里图片没有截...
    99+
    2023-05-30
    android waveprogressview 水波纹
  • Android自定义View实现圆形加载进度条
    本文实例为大家分享了Android自定义View实现圆形加载进度条的具体代码,供大家参考,具体内容如下 效果图 话不多说,咱们直接看代码 首先第一种: 1、创建自定义View类 p...
    99+
    2024-04-02
  • Android自定义加载圈的方法
    本文实例为大家分享了Android自定义加载圈的具体代码,供大家参考,具体内容如下 <RelativeLayout xmlns:android="http://schemas...
    99+
    2024-04-02
  • 定义自定义字体需要css的哪个规则
    这篇文章主要介绍定义自定义字体需要css的哪个规则,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 定义自定义字体需要css的“@font-face”规则。...
    99+
    2024-04-02
  • Java中如何自定义一个类加载器
    目录如何自定义加载器?示例:读取某文件的下的某class文件类加载器的使用及自定义类加载器如何自定义加载器? 1.创建一个自定义加载器类 继承 ClassLoader 类 2.重写 ...
    99+
    2022-11-21
    Java自定义类加载器 自定义类加载器 Java类加载器
  • spring data jpa 查询自定义字段,转换为自定义实体方式
    目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台。 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作