将自定义字体设置为JLabel

时间:2014-03-30 15:50:23

标签: java swing fonts jlabel

我正在做一个简单的 Pong 游戏,想要添加一个8位字体,但无法弄清楚如何。 这是我用于JLabel的方法:

public void drawScore()
{
    player1 = "Player 1";
    player2 = "Player 2";


    JLabel leftScore = new JLabel(player1);
    JLabel rightScore = new JLabel(player2);

    leftScore.setForeground(Color.white);
    rightScore.setForeground(Color.white);

    leftScore.setLocation(20, 0);
    rightScore.setLocation(730, 0);

    leftScore.setSize(100, 40);
    rightScore.setSize(100, 40);

    add(leftScore);
    add(rightScore);
}

我尝试过在这里和其他网站上找到的解决方案,但他们也没有成功。 .TTF 文件位于名为' assets'的文件夹中。 - 我在 Java项目文件夹中创建了名为 Pong 的文件。如果正确的代码不包含trycatch块,那将是完美的。

2 个答案:

答案 0 :(得分:1)

private static Font fontAwesome;

static {
    try (InputStream in = YOURCLASS.class.getClassLoader().getResourceAsStream("assets/fontawesome-webfont.ttf")) {
        fontAwesome = Font.createFont(Font.TRUETYPE_FONT, in);
    } catch (FontFormatException | IOException e) {
        e.printStackTrace();
    }
}

这是fontawesome的一个例子。将其粘贴到班级的顶部,然后简单地使用 leftScore.setFont(fontAwesome);设置字体。

不幸的是,您需要尝试/捕获。请注意,根据您的语言级别,多参数块可能不起作用。如果它不能将它们分成两个捕获块。

答案 1 :(得分:0)

请试试这个:

try {
    InputStream is = YourClass.class.getResourceAsStream("path/to/font");
    Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
    Font sizedFont = font.deriveFont(18f);
    jLabel.setFont(sizedFont);

} catch (Exception ex) {
    System.err.println("Not loaded");}

加载字体后,需要为其设置大小!

您必须使用try/catch块才能执行此操作。