gpt4 book ai didi

java - Swing 无法将自定义字体与 HTML 标记一起使用

转载 作者:行者123 更新时间:2023-11-30 06:12:37 25 4
gpt4 key购买 nike

当使用通过 Font.createFont 方法创建的自定义字体(并且操作系统上未安装该字体)时,如果存在任何 HTML 标记,swing 文本组件将使用默认字体:

import java.awt.Font;
import java.awt.GridLayout;
import java.io.File;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class TestFont
{
public static void main(String [] args) throws Exception
{
Font customFont = Font.createFont(Font.TRUETYPE_FONT, new File("Manaspace.ttf")).deriveFont(12f);
Font courier = Font.decode("Courier").deriveFont(12f);

JFrame win = new JFrame("TestFont");
JPanel panel = new JPanel(new GridLayout(2, 2, 10, 10));

JLabel label1 = new JLabel("Courier");
label1.setFont(courier);
panel.add(label1);

JLabel label2 = new JLabel("<html>Courier with HTML</html>");
label2.setFont(courier);
panel.add(label2);

JLabel label3 = new JLabel("Manaspace");
label3.setFont(customFont);
panel.add(label3);

JLabel label4 = new JLabel("<html>Manaspace with HTML</html>");
label4.setFont(customFont);
panel.add(label4);

win.setContentPane(panel);
win.pack();
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
}
}

给出输出:

enter image description here

请注意,右下角标签不使用 manaspace 字体。

最佳答案

在可以“间接”访问自定义Font之前,必须先将其注册到GraphicsEnvironment。像这样的东西:

ge.registerFont(font);

关于java - Swing 无法将自定义字体与 HTML 标记一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49903697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com