2014-03-30 59 views
0

我正在做一個簡單的Pong遊戲,並且想要添加一個8位字體,但不知道如何。 這是我用的JLabel的方法:將自定義字體設置爲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); 
} 

我試過,我發現就在這裏解決方案和其他網站和他們沒有工作太好。在Java項目文件夾名爲Pong的文件夾中創建了一個名爲'資產'的文件夾中的.TTF文件。如果正確的代碼不包括trycatch塊,那將是完美的。

+0

如果您嘗試了一種您在網上找到的方式,那麼您的問題可以得到更好的回答,然後當您遇到更具體的問題時回到問題中來回答。 – amoebe

回答

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);設置字體。

不幸的是,你將需要嘗試/捕獲。請注意,multicatch塊可能無法使用,具體取決於您的語言級別。如果它不把它們分成兩個catch塊。

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塊來做到這一點。