我正在做一个简单的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"的文件夹中 - 我在名为Pong的Java项目文件夹中创建。如果正确的代码不包含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(fontAwesome);
设置字体。
不幸的是,您将需要尝试/捕获。请注意,多重捕获块可能无法正常工作,具体取决于您的语言水平。如果它不只是将它们分成两个捕获块。
请尝试以下操作:
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
块来执行此操作。