2011-12-07 61 views
4

在我們的Java Swing應用程序,我們正在加載自定義字體並將其添加到JLabel的Java Swing的JLabel,HTML和自定義字體

try { 
    this.font = Font.createFont(Font.TRUETYPE_FONT, new File("resources/fonts/ourcoolfont.ttf")).deriveFont(16f); 
} catch (Exception e) { 
    this.font = new Font("Arial", Font.PLAIN, 16); 
} 
this.label.setFont(this.font); 

簡單,在3級不同的系統工作正常。直到有人試圖運行它。字體被加載(因爲我們也在使用其他一些Swing元素),但在JLabel中沒有使用。

經過一番搜索,我發現你不能同時使用HTML和加載的字體。由於某些原因,它適用於我的系統(我認爲它與Java版本有關),但不是其他一些原因。由於我們希望項目能夠在過時的Java版本中工作,因此只是要求更新不是一種選擇。

一種選擇是在計算機上安裝字體,這是我們不喜歡做的事情。我找到的最佳解決方案是: How can I create a Java/Swing text component that is both styled and has a custom font?

但是,這個問題是關於JTextPane。 A JLabel似乎沒有getStyledDocument()我可以使用的方法。

有沒有什麼辦法讓我們的字體與JLabel一起工作?

回答

9

要使用某些字體:

<html><head><style type="text/css"> 
body { font-family: Cool; } </style></head><body>... 

你創建的字體必須在單身GraphicsEnvironment中第一個註冊是對所有人開放:

GraphicsEnvironment genv = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
genv.registerFont(font); 
+0

謝謝!只是註冊似乎足以解決問題:) – Bv202

+0

酷 - 有很多東西要學,甚至在幾十年後:-) – kleopatra