Java 将自定义字体设置为JLabel

Java 将自定义字体设置为JLabel,java,swing,user-interface,fonts,jlabel,Java,Swing,User Interface,Fonts,Jlabel,我正在做一个简单的乒乓游戏,想添加一个8位字体,但不知道如何添加。 这是我用于JLabels的方法: public void drawScore() { player1 = "Player 1"; player2 = "Player 2"; JLabel leftScore = new JLabel(player1); JLabel rightScore = new JLabel(player2); leftScore.setForeground(C

我正在做一个简单的乒乓游戏,想添加一个8位字体,但不知道如何添加。 这是我用于JLabels的方法:

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);
}
我尝试了在这里和其他网站上找到的解决方案,但效果也不好。在名为“assets”的文件夹中有一个.TTF文件,该文件夹是我在Java项目文件夹中创建的,名为Pong。如果正确的代码不包括
try
catch
块,那就太完美了

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(FontScore)
设置字体

不幸的是,你需要试一试。请注意,multicatch块可能无法工作,具体取决于您的语言级别。如果不只是将它们分成两个挡块。

请尝试以下方法:

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
块来执行此操作