2011-11-30 151 views
5

我有一些自定義組件與覆蓋paintComponent(Graphics g)方法。在某些組件drawString()方法中使用Graphics g對象。 我想爲這些繪製的字符串定義自定義字體。鞦韆創建字體

我有真正的字體定義的* .ttf文件。 我有風格類CSS文件,定義喜歡的字體:

.rosTexLogoTitle { 
    -fx-font: bold 20pt 'Tahoma Bold'; 
    -fx-text-fill: #246db6; 
    -fx-font-weight: heavybold; 
    -fx-padding: 0 10 0 0 

我想定義在我的Java類從CSS的所有屬性也許沒有必要的方式直接從CSS-文件使用樣式( )。

我試圖用地圖參數的構造函數創建字體:

public Font(Map<? extends Attribute, ?> attributes) { 
} 

但是我沒有成功。 我可以用Font.createFont(style, path)創建自定義字體,然後可以派生它來設置大小。顏色可以在Graphics.setColor()中設置。但我不能設置'Tahoma Bold'。

+0

您的問題是什麼? –

+0

如何正確設置所有的字體屬性(我有他們在CSS)。 從* .ttf創建字體,然後派生並設置大小,並將顏色設置爲圖形?如何設置字體重量?如何設置家庭?如何使用Font構造函數,它使用屬性Map? 問題的另一部分是關於平滑這個文本,但我的意思是創建另一個問題MB? –

+0

當我問*「你的問題是什麼?」*我的意思是一個**單一的問題,而不是其中的五個。選擇你最喜歡的。 –

回答

2

您不能設置字體的粗細或家庭;這些只是用來選擇正確的.ttf文件。

所以解決方案是使用正確的.ttf文件開始。例如,字體系列Arial有四個文件:

arialbd.ttf - Weight "Bold" 
arialbi.ttf - Weight "Bold", Slant "Italic" 
ariali.ttf - Slant "Italic" 
arial.ttf - Plain version 
1

您是否擁有.ttf文件?的createFont(樣式,文件)返回一個新的字體,那麼在哪裏設置顏色

u可以使用sun.awt.Win32GraphicsEnvironment.getAvailableFontFamilyNames()獲取所有操作系統的字體