如何在Java图形用户界面应用程序中更改字体?

3

我想在我的Java GUI应用程序中更改字体。

目前我正在使用 Font newFont = new Font("Serif", Font.BOLD, 24); 来更改字体。

我该如何在我的Java GUI应用程序中使用像'comic sans'或'calibri'这样的字体?

目前我正在使用jdk 1.60。


请使用“Comic Sans”或“Calibri”字体,而不是“Serif”。 - SkyWalker
“Serif” 不是字体,而是一种字体风格。 - Rogue
1
http://stackoverflow.com/questions/23297709/why-does-my-program-not-change-the-font-or-size-of-the-font-when-clicked-in-the - Ninad Pingale
https://dev59.com/5Gs05IYBdhLWcg3wIOXS - PeterMmm
2个回答

13

你可以通过使用类似于以下方式列出可用字体名称来开始...

String fonts[]
        = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

for (int i = 0; i < fonts.length; i++) {
    System.out.println(fonts[i]);
}

这是一个很好的检查字体名称的小方法。

如果您这样做,您会发现“Comic Sans”被列为“Comic Sans MS”,这意味着您需要使用类似于 new Font("Comic Sans MS", Font.PLAIN, 24) 的东西来创建新字体。

例如...

Font

显示:Comic Sans MS,Calibri,外观默认

public class TestPane extends JPanel {

    public TestPane() {
        setLayout(new GridBagLayout());
        JLabel label = new JLabel("Hello");
        label.setFont(new Font("Comic Sans MS", Font.PLAIN, 24));
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        add(label, gbc);

        label = new JLabel("Hello");
        label.setFont(new Font("Calibri", Font.PLAIN, 24));
        add(label, gbc);

        label = new JLabel("Hello");
        Font font = label.getFont();
        label.setFont(font.deriveFont(Font.PLAIN, 24f));
        add(label, gbc);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(200, 200);
    }

}

1

我假设您已经尝试在构造函数中使用Comic Sans和Calibri字体。如果不起作用,请确保在您的情况下它是有效的字体。请使用以下代码检查 -

String FontList[]; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); FontList = ge.getAvailableFontFamilyNames();

FontList [] 包含所有可用的字体类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接