如何在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
相关产品推荐
相关产品推荐

