2009-02-21 15 views
7

मैं एक JEditorPane इस तरह के द्वारा बनाई गई है।दिखा छवियों

पाठ सही ढंग से दिखाया गया है, लेकिन मैं चित्र नहीं देख सकते हैं, वहाँ केवल एक वर्ग का संकेत है कि वहाँ एक छवि होना चाहिए (यानी: "टूटी हुई छवि" ब्राउज़र द्वारा दिखाया जाता है जब तस्वीर नहीं पाया गया है)

उत्तर

8

आपको प्रकार प्रदान करना होगा, और संसाधन प्राप्त करना होगा। बस इतना ही। मेरा परीक्षण उदाहरण, लेकिन मुझे बनाने के बारे में निश्चित नहीं है। आशा है कि यह मदद करता है:

import java.io.IOException; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 

public class Test extends JFrame { 

    public static void main(String[] args) throws Exception { 
     Test.createAndShowGUI(); 
    } 

    private static void createAndShowGUI() throws IOException { 

     JFrame.setDefaultLookAndFeelDecorated(true); 

     JFrame frame = new JFrame("HelloWorldSwing"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     String imgsrc = 
      Test.class.getClassLoader().getSystemResource("a.jpg").toString(); 
     frame.getContentPane().add(new JEditorPane("text/html", 
      "<html><img src='"+imgsrc+"' width=200height=200></img>")); 
     frame.pack(); 

     frame.setVisible(true); 
    } 
} 
+0

मैंने पहले से ही इस तरह से प्रयास किया है और मुझे कभी भी एक शून्य सूचक अपवाद मिलता है :( – Giancarlo

+0

मुझे नहीं पता कि आपको अपवाद कहां मिला है, लेकिन आप मेरा उदाहरण आज़मा सकते हैं। और उसी निर्देशिका में a.jpg डालें कक्षा। आप इसे javac test.java && जावा परीक्षण चला सकते हैं। और क्योंकि मैंने विंडो का आकार सेट नहीं किया है, आप इसे छवि देखने के लिए बड़ा सेट कर सकते हैं। – michal

+1

(ClassLoader.getSystemResource एक स्थिर विधि है। GetResource होगा एक बेहतर विकल्प।) –

4

JEditorPane HTMLDocument.getBase उपयोग कर रहा है और साथ ही इसलिए यह सापेक्ष URL का समाधान करता सापेक्ष URL पता लगाने के लिए है, तो आप एक निर्देशिका से सामग्री प्रदर्शित कर रहे हैं, एचटीएमएल दस्तावेज़ के आधार पर तैयार करना न भूलें आधार निर्देशिका के लिए।

इस छवि के आधार पर वास्तव में कहां है, आप HTMLEditorKit + HTMLFactory + ImageView का विस्तार करना चाहते हैं और ImageView का एक कस्टम कार्यान्वयन प्रदान करना चाहते हैं, जो छवि यूआरएल में विशेषता यूआरएल मैप करने के लिए भी जिम्मेदार है।

0

मैंने नेटबीन्स में काम करते समय इसका इस्तेमाल किया, हालांकि यह काम करता था। मुझे लगता है कि एक छोटे संशोधन करता है, तो कार्यक्रम NetBeans के बाहर चलाना चाहिए,

String imgsrc=""; 
try { 
    imgsrc = new File("passport.jpg").toURL().toExternalForm(); 
} catch (MalformedURLException ex) { 
    Logger.getLogger(EntityManager.class.getName()).log(Level.SEVERE, null, ex); 
} 
//System.out.println(imgsrc); use this to check 
html = "<img src='" + imgsrc + "' alt='' name='passport' width='74' height='85' /><br />"; 
//use the html ... 

अगर आप जार से चलाने के लिए, छवि फ़ाइल एक ही निर्देशिका स्तर पर हो सकता है, ... वास्तव में, छवि फ़ाइल है आपके निष्पादन प्रविष्टि के समान निर्देशिका पर होना चाहिए। ऊपर मेरे लिए काम किया

+1

* "यदि आप जार से भागते हैं, तो छवि फ़ाइल को एक ही निर्देशिका स्तर पर होना चाहिए, .." * रोट! [इस उत्तर] पर स्रोत देखें (http: // stackoverflow।कॉम/प्रश्न/6373621/लोडिंग-इमेज-से-जर्स-फॉर-स्विंग-एचटीएमएल/6373907 # 6373907) जो दर्शाता है कि रिश्तेदार संदर्भों से छवियों को कैसे लोड किया जाए, साथ ही HTML में 'बेस' तत्व का उपयोग कैसे करें। बेस को 'जेडडिटरपेन' विधियों में भी स्पष्ट रूप से सेट किया जा सकता है। –

3

कोई नहीं है, तथापि 'imgsrc = new File("passport.jpg").toURL().toExternalForm();' मुझे कोशिश करते हैं और html में प्रत्येक छवि के लिए जाने के लिए एक पूर्ववर्ती 'फ़ाइल:' है ताकि अब इसे पढ़ता है:

<img src="file:passport.jpg" /> 

और उस के लिए ठीक काम करता है मुझे।

1

यदि आप छवि के सापेक्ष पथ को निर्दिष्ट करना चाहते हैं।

मान लें कि आपका परियोजना फ़ोल्डर संरचना निम्नलिखित के रूप में है दो:

sample_project/images
sample_project/images/loading.gif
sample_project/src
sampler_project/src/package_name

अब छवि टैग इस प्रकार दिखाई देगा:
"<img src='file:images/loading.gif' width='100' height='100'>"

Yaay!

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