2015-04-02 60 views
0

有沒有辦法在字符串上設置字體,然後使用圖形繪製字符串?我知道你可以在Jlabels,Jtextfields和J-other組件上做到這一點,但是有什麼方法可以在字符串上完成它?謝謝。如何將字體設置爲字符串

+0

是的,這是可能的,檢查出[圖形,文字API(https://docs.oracle.com/javase/tutorial/2d/overview/text.html) – MadProgrammer 2015-04-02 21:34:12

回答

1

你可以用attributed strings做到這一點的例子是

Font font = new Font("LucidaSans", Font.PLAIN, 14); 
AttributedString atString= new AttributedString("Example text string"); 
atString.addAttribute(TextAttribute.FONT, font); 
graphic.drawString(atString.getIterator(),x,y); 

乾杯!

0

是的,這是可能的,通過基本檢查出Graphics, Text tutorials

開始,你可以使用Graphics#setFont設置字體和使用Graphics#drawString繪製String

另見Performing Custom Painting如何,你可以在Swing進行自定義繪圖

對於example

列出可用的字體名稱....

String fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 
for (String font : fonts) { 
    System.out.println(font); 
} 

Font fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts(); 
for (Font font : fonts) { 
    System.out.println(font); 
} 

你可以使用一個操作字體的屬性F中的Font#derive方法...

Font font = ...; 
Font bigger = font.derive(32f); 
Font bolder = font.derive(Font.BOLD); 
Font biggerAndBolder = font.derive(Font.BOLD, 32f); 
+0

我看。當你設置字體時,你把字體名稱。在下面的字體中,我拼寫出新的羅馬字是錯誤的,但它並沒有顯示爲錯誤。爲什麼? static Font f = new Font(「Times New Roan」,Font.BOLD,20); – Ski 2015-04-02 21:40:12

+0

爲什麼要這樣呢?如果我沒有記錯,API有回退過程,所以如果系統中不存在該字體,它將回退到通用字體 – MadProgrammer 2015-04-02 21:41:33

+0

我們如何知道該字體是否存在於API上?是否有可用字體的完整列表?還有多少構造字體可用於創建字體? – Ski 2015-04-02 21:43:35

0

我們實際上可以在圖形中設置字體......然後繪製字符串。

public void paintComponent(Graphics g) { 

    super.paintComponent(g); 

    g.setColor(Color.BLUE); 
    g.setFont(Fonts.f); 
    g.drawString(Fonts.text, 50, 50); 

} 
相關問題