2011-06-16 7 views
15

के लिए जार से छवियों को लोड करना this answerImageIcons के लिए जार फ़ाइलों से छवियों को लोड करने के लिए काम करता है, मुझे Swing HTML में संदर्भित छवियों के लिए सही पथ नहीं मिल रहा है।स्विंग एचटीएमएल

यह स्विंग HTML में एक छवि प्रदर्शित करता है संसाधनों एक जार में बंडल नहीं कर रहे हैं जब:

new JLabel("<html><table cellpadding=0><tr><td><img src='file:icons/folder_link.png'></td></tr><tr><td>100</td></tr></table></html>")); 

जार के अंदर, छवि सफलतापूर्वक संदर्भित किया जा सकता है (और प्रदर्शित) में एक ImageIcon:

Icon topIcon = new ImageIcon(getClass().getResource("icons/folder_link.png")); 

हालांकि, स्विंग HTML के लिए getResource तकनीक का उपयोग करने का मेरा प्रयास काम नहीं करता है।

String p = getClass().getResource("icons/folder_link.png").getPath(); 
new JLabel("<html><table cellpadding=0><tr><td><img src='" + p + "'></td></tr><tr><td>100</td></tr></table></html>")); 

रहस्य क्या है?

उत्तर

13

वास्तव में यह कोशिश कर के बिना, मुझे लगता है यह होगा कि HTML रेंडरर अगर आप अपने एचटीएमएल कोड में संसाधन यूआरएल शामिल आपकी छवि का उपयोग कर सकते हैं:

String p = getClass().getResource("icons/folder_link.png").toString(); 
new JLabel("<html><table cellpadding=0><tr><td><img src='" + p + "'></td></tr><tr><td>100</td></tr></table></html>")); 
+0

toString चले गए ... निश्चित रूप से। GetPath() – jedierikb

+0

से भी अधिक स्पष्ट है, इसके अलावा, apostrophes_ (जैसे मेरे) में यूआरएल लपेटना न भूलें। अजीब रूप से पर्याप्त, बिना apostrophes के ग्रहण में यह काम किया लेकिन जब एक जार में बंडल नहीं किया। –

9

यूआरएल गुप्त

कोशिश है इस दोस्त:

URL p = getClass().getResource("icons/folder_link.png"); 
new JLabel("<html><table cellpadding=0><tr><td><img src='" + p + "'></td></tr><tr><td>100</td></tr></table></html>")); 

तो फिर तुम भी ऐसा कर सकता है:

Icon topIcon = new ImageIcon(p); 

और फिर यदि आप ऐसा करना चाहते हैं तो इस आइकन को अपने जेएलएबल के आइकन के रूप में सेट करें!

+0

आपका उत्तर URL ऑब्जेक्ट को स्ट्रिंग() में परिवर्तित करता है। – jedierikb

0

क्योंकि यहां तक ​​कि original demo स्विंग में HTML का उपयोग कर HTML में छवियों को एम्बेड नहीं करता है ( चित्र आइकन के साथ बटन पैदा करने के लिए) के लिए सूर्य से, मुझे शक है कि वहाँ भी जगह में छवियों को प्रदर्शित करने के लिए समर्थन करते हैं। मुझे कहीं भी "एचटीएमएल का सीमित सबसेट" पाठक याद है, लेकिन अभी कोई संदर्भ नहीं मिल रहा है।

संपादित करें: कृपया एंड्रयू की टिप्पणी और उत्तर देखें, यह वास्तव में काम करता है।

+0

"मुझे संदेह है कि छवियों को प्रदर्शित करने के लिए भी समर्थन है।" जबकि 'जेडडिटरपेन' केवल सरल सीएसएस के साथ एचटीएमएल का सीमित उप-सेट प्रदर्शित करेगा - आप वहां ट्रैक से बाहर हैं। मेरा उदाहरण देखें। –

+0

@Andrew जानकारी के लिए धन्यवाद, +1। – Waldheinz