2012-10-21 34 views
13

मुझे अपने जावा स्विंग एप्लिकेशन में कस्टम फ़ॉन्ट्स (ttf) का उपयोग करने की आवश्यकता है। मैं उन्हें अपने पैकेज में कैसे जोड़ूं और उनका उपयोग कैसे करूं?स्विंग एप्लिकेशन में फोंट जोड़ना और पैकेज में शामिल करना

मतलब है, मैं बस उन्हें विंडोज़ में स्थापित करता हूं और फिर मैं उनका उपयोग करता हूं, लेकिन मैं नहीं चाहता कि एप्लिकेशन का उपयोग इतना जटिल हो, उपयोगकर्ता को फोंट इंस्टॉल करने के लिए यह कहना बहुत सुविधाजनक नहीं है मेरे आवेदन का उपयोग कर।

+0

यह शायद एक नकली सवाल है, [यहां] (http://stackoverflow.com/questions/5652344/how-can-i-use-a-custom-font- देखना इन-जावा)। – linski

+1

@DanM यदि आपने उद्देश्य पर एक बक्षीस खोला है क्योंकि आप वर्तमान उत्तरों से संतुष्ट नहीं हैं, तो आपको यह स्पष्ट करना चाहिए कि यह आपके प्रश्न का उत्तर क्यों नहीं देता है और/या आपको कौन सी अतिरिक्त जानकारी चाहिए। – assylias

+0

संभावित डुप्लिकेट [जावा में एक फ़ॉन्ट एम्बेड करना] (http://stackoverflow.com/questions/4487871/embedding-a-font-in-java) –

उत्तर

16

आप उन्हें एक InputStream के माध्यम से लोड कर सकते हैं:

InputStream is = MyClass.class.getResourceAsStream("TestFont.ttf"); 
Font font = Font.createFont(Font.TRUETYPE_FONT, is); 

यह भरी हुई फॉन्ट कोई पूर्वनिर्धारित फ़ॉन्ट सेटिंग्स है तो उपयोग करने के लिए, आपको बस इतना करना होगा:

Font sizedFont = font.deriveFont(12f); 
myLabel.setFont(sizedFont); 

देखें:

Physical and Logical Fonts

+0

मुझे TestFont.ttf फ़ाइल कहां रखने की आवश्यकता है? – DanM

+0

ऊपर दिए गए उदाहरण के लिए इसे कक्षा फ़ाइल के समान स्थान पर होना चाहिए। – Reimeus

+1

या यदि यह एक पैकेज में है, तो आप इसे पूर्ण पैकेज नाम से एक्सेस कर सकते हैं। उदाहरण: मेरे पास पैकेज _foo.bar.master.cork_ में ttf फ़ाइल _foo.ttf_ है, मैं इसे 'getResourceAsStream ("/ foo/bar/master/cork/foo.ttf") के माध्यम से एक्सेस करूंगा। इसका क्या अर्थ है: शुरुआत में एक आगे स्लैश डालें, प्रत्येक डॉट को फॉरवर्ड स्लैश (फ़ाइल नाम को छोड़कर) के साथ प्रतिस्थापित करें, और पथ के अंत में आगे फॉरैश करें ** लेकिन फ़ाइल से पहले। ** – TheBrenny

7

जैसा कि रीमेस ने कहा, आपका उपयोग कर सकते हैं। दोनों ही मामलों में

File font_file = new File("TestFont.ttf"); 
Font font = Font.createFont(Font.TRUETYPE_FONT, font_file); 

आप या आपके परियोजना के दोनों रूट निर्देशिका कुछ उप निर्देशिका में अपने फ़ॉन्ट फ़ाइलों डाल होगा: आप भी एक File उपयोग कर सकते हैं। मूल निर्देशिका शायद आपके प्रोग्राम से चलने वाली निर्देशिका होनी चाहिए। उदाहरण के लिए, अगर आप की तरह एक निर्देशिका संरचना है:

My_Program 
| 
|-Fonts 
| |-TestFont.ttf 
|-bin 
    |-prog.class 

आप अपने कार्यक्रम My_Program निर्देशिका से साथ java bin/prog साथ भाग जाता है। फिर आपके कोड में फ़ाइल पथ और नाम InputStream या File को पास करने के लिए "Fonts/TestFont.ttf" होगा।

0

इस प्रयास करें:

@Override 
public Font getFont() { 
    try { 
     InputStream is = GUI.class.getResourceAsStream("TestFont.ttf"); 
     Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
     return font; 
    } catch (FontFormatException | IOException ex) { 
     Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex); 
     return super.getFont(); 
    } 
}