2012-03-09 14 views
13

मेरे पास एक जेबटन है और मैं इसमें एक आइकन जोड़ना चाहता हूं। मैं FontAwesome से फ़ॉन्ट आधारित आइकनों का उपयोग करना चाहता हूं जो एक ट्रू टाइप फ़ॉन्ट फ़ाइल प्रदान करता है। जिस आइकन को मैं जोड़ने का प्रयास कर रहा हूं वह प्ले बटन आइकन है। FontAwesome के लिए सीएसएस फ़ाइल में प्ले बटन आइकन \f04b है जो मैं जावा में \uf04b पर अनुवाद करता हूं।जावा स्विंग में AwesomeFont और यूनिकोड वर्णों से कस्टम फ़ॉन्ट का उपयोग करके जेबटन में आइकन जोड़ें?

इस प्रकार मैं आइकनबटन बेस क्लास के निर्माता में फ़ॉन्ट लोड कर रहा हूं।

public class IconButton extends JButton { 
    public IconButton() { 
    try { 
     InputStream in = this.getClass().getResourceAsStream("/fontawesome-webfont.ttf"); 
     Font ttfBase = Font.createFont(Font.TRUETYPE_FONT, in); 
     Font ttfReal = ttfBase.deriveFont(Font.BOLD, 24); 
     setFont(ttfReal); 
    } catch (FontFormatException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

कार्यान्वयन कक्षा स्टार्टबटन में इस प्रकार मैं टेक्स्ट सेट कर रहा हूं।

public class StartButton extends IconButton { 
    public StartButton() { 
    setText(String.valueOf('\u0f4b')); 
    setForeground(Color.BLACK); 
    } 
} 

यही मुझे मिलता है। कुछ भी तो नहीं।

JButton

किसी भी मदद की बहुत सराहना कर रहा है।

संपादित करें: नीचे उत्तर देखें।

+0

कि ('createFont' अपवाद है कि न तो पकड़ा है और न ही घोषित किया गया है फेंकता है), और यह दिखाए गए दो वर्गों का भयानक डिज़ाइन लगता है (1. पहली कक्षा एक बार फ़ॉन्ट बना सकती है और इसे एक स्थिर विशेषता के रूप में कैश कर सकती है। यदि यह टेक्स्ट के लिए स्ट्रिंग के चारों ओर एक कन्स्ट्रक्टर को परिभाषित करता है, तो सुपर कन्स्ट्रक्टर को कॉल कर सकता है, यह हो सकता है avo दूसरी कक्षा पूरी तरह से आईडी)। वैकल्पिक रूप से ए। चूंकि 'आइकनबटन' एक 'फ़ॉन्ट' सेट करता है और 'स्टार्टबटन' एक अग्रभूमि रंग सेट करता है, मानक 'जेबटन' का उपयोग करें और प्रत्येक को एक को कॉन्फ़िगर करने के लिए एक विधि में सौंपें। बी। एक नया पीएलएफ़ का प्रयोग करें या 'UIManager' –

+0

समायोजित करें शोर को कम करने के लिए कोड को एप्लिकेशन से शब्दशः नहीं खींचा गया था, लेकिन पूर्णता के लिए मैंने इसे कोशिश/पकड़ने के लिए अपडेट किया है। मैं यह भी जोड़ूंगा कि मैं सहमत हूं कि इसे केवल एक बार फ़ॉन्ट बनाना चाहिए। अच्छा सुझाव। मुझे पीएलएफ़ और यूआईएमएजर में देखना होगा। –

+0

* "कोड को एप्लिकेशन से शब्दशः नहीं खींचा गया था" * उस मामले में जावा कोड के बजाए शब्दों या छद्म कोड (स्पष्ट रूप से इस तरह चिह्नित) में इसका वर्णन करने के लिए बेहतर है। इसे अद्यतन करने पर अच्छी कॉल। :) –

उत्तर

12

मुझे लगता है कि मैंने इसे वास्तव में हल किया है। सही चरित्र \uf04b\u0f4b नहीं है। ओह! :)

यह मेरे लिए अभी काम कर रहा है।

JButton with Play Icon

+2

आप अपने उत्तरों को स्वीकार कर सकते हैं और स्वीकार कर सकते हैं! (एसओ ब्लॉग पर कहीं इसके बारे में एक ब्लॉग पोस्ट था) – JavaAndCSharp

1

पर http://jiconfont.github.io/

उदाहरण jIconFont (स्विंग या JavaFX) का प्रयास करें:

पहले कोड wold संकलन नहीं
Icon icon = IconFontSwing.buildIcon(FontAwesome.FLOPPY_O, 15); 

JButton button = new JButton(icon); 
+1

कृपया कई प्रश्नों के सटीक उसी उत्तर को कॉपी और पेस्ट न करें – Andy

+0

मेरी माफ़ी। जब मैं कई प्रश्नों का उत्तर बिल्कुल वही करता हूं तो मुझे कैसे आगे बढ़ना चाहिए? –

संबंधित मुद्दे