You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在java.awt中查询当前系统可用的字体列表

Java获取系统可用字体实现方案

不需要自行实现GraphicsEnvironment抽象类的子类,JDK会根据当前操作系统自动提供对应适配的非抽象实现,直接调用静态方法获取实例即可。

实现步骤

  • 调用GraphicsEnvironment的静态方法GraphicsEnvironment.getLocalGraphicsEnvironment(),获取当前系统的图形环境实例
  • 调用实例方法获取字体相关数据:
    • 调用getAllFonts()获取所有可用字体的Font对象数组
    • 调用getAvailableFontFamilyNames()直接获取所有字体族的名称列表,适合下拉选择等需要展示字体名的场景

示例代码

import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class FetchSystemFonts {
    public static void main(String[] args) {
        // 直接获取本地环境实例,无需自定义实现子类
        GraphicsEnvironment localEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();
        
        // 获取所有字体对象
        Font[] allSystemFonts = localEnv.getAllFonts();
        for (Font font : allSystemFonts) {
            System.out.println("字体完整名称:" + font.getFontName());
        }

        // 仅获取字体族名称(更常用)
        String[] fontFamilyNames = localEnv.getAvailableFontFamilyNames();
        for (String familyName : fontFamilyNames) {
            System.out.println("字体族名称:" + familyName);
        }
    }
}

补充说明

GraphicsEnvironment的平台适配逻辑完全由JDK内部封装,Windows、MacOS、Linux等不同系统的JDK都内置了对应的实现类,调用静态获取方法时会自动匹配当前环境返回实例,开发者不需要关心底层实现细节。

内容的提问来源于stack exchange,提问作者AdmosJagashvili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:06