如何在JTextPane中使用来自Google Fonts的字体?
给JTextPane应用已下载的Google Fonts字体方法
第一步:加载本地字体文件到Swing运行环境
你已经下载好的字体文件(通常为.ttf或.otf格式),可以直接通过Font类的静态方法加载注册到当前JRE环境中,无需安装到系统层面,示例代码如下:
import java.awt.Font; import java.awt.GraphicsEnvironment; import java.io.InputStream; import javax.swing.JTextPane; public class CustomFontTest { public static void main(String[] args) throws Exception { // 1. 读取字体文件流,路径根据你项目的资源存放位置调整 InputStream fontStream = CustomFontTest.class.getResourceAsStream("/fonts/你下载的字体文件名.ttf"); // 2. 创建字体实例,deriveFont参数为默认字号,可自行修改 Font googleFont = Font.createFont(Font.TRUETYPE_FONT, fontStream).deriveFont(16f); // 3. 可选:注册到系统字体环境,方便项目全局调用 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ge.registerFont(googleFont); // 给JTextPane设置全局字体 JTextPane textPane = new JTextPane(); textPane.setFont(googleFont); } }
局部文本应用字体的配置方法
如果只需要给JTextPane内的部分内容设置该字体,需要通过StyledDocument配置样式:
import javax.swing.text.Style; import javax.swing.text.StyleConstants; import javax.swing.text.StyledDocument; // 省略基础代码 StyledDocument doc = textPane.getStyledDocument(); Style customStyle = doc.addStyle("googleFontStyle", null); StyleConstants.setFontFamily(customStyle, googleFont.getFamily()); StyleConstants.setFontSize(customStyle, 16); // 给指定范围的文本应用样式,示例为给全部文本应用 doc.setCharacterAttributes(0, doc.getLength(), customStyle, false);
注意事项
- 打包运行时不要用绝对路径读取字体文件,使用类加载器的
getResourceAsStream方法可以兼容Jar包运行场景 - 打包项目时需要把字体文件一同打包到发布包内,避免运行时找不到资源
内容的提问来源于stack exchange,提问作者Ruthvik
相关产品推荐
相关产品推荐

