2012-01-19 9 views
9

मेरे पास एक स्ट्रिंग HTML सामग्री है जो webEngineloadContent() विधि द्वारा लोड की गई है। मेरे पास इस पृष्ठ में कुछ सीएसएस और छवि फ़ाइलों का भी उपयोग किया गया है। हालांकि मैंने इन फाइलों को जावा क्लास के उसी पैकेज में रखा है, लेकिन लोड किया गया पृष्ठ उन्हें नहीं ढूंढ सकता है। एपीआई दस्तावेज़ और वेब के लिए देखा, लेकिन किसी भी एप्राइपिएट समान समाधान नहीं मिला। मैं इन फ़ाइलों को कैसे लोड करता हूं?javafx.scene.web.WebEngine # loadContent द्वारा लोड किए गए HTML पृष्ठ से सीएसएस और छवि फ़ाइलों तक कैसे पहुंचे?

view.getEngine().loadContent(
"<img src='" + getClass().getResource("1.jpg") + "' />"); 

उत्तर

7

आप loadContent अगले रास्ता के लिए एचटीएमएल स्ट्रिंग में अपने स्थानीय पथ निर्धारित करने की आवश्यकता :

engine.load(getClass().getResource("mypage.html").toExternalForm()); 

जब आप ऐसा करते, html पृष्ठ में सभी संबंधित लिंक्स संसाधनों (जैसे सीएसएस और छवि फ़ाइलें) के लिए अपने जावा पैकेज में समाधान हो जाएगा।

सावधान रहें कि यदि आप एक जार फ़ाइल में स्थित संसाधन लोड कर रहे हैं, तो jar: प्रोटोकॉल पैरेंट विनिर्देशकों के सापेक्ष लिंक को समझ में नहीं आता है। उदा।, <img src="../images/image.png"/> काम नहीं करेगा, लेकिन <img src="/images/image.png"/> या <img src="images/image.png"/> लंबे समय तक (जैसा कि आप छवि को जार फ़ाइल में उचित स्थान पर रखते हैं)। file: प्रोटोकॉल में ऐसे प्रतिबंध नहीं हैं और .. संबंधित लिंक इसका उपयोग कर लोड होने पर सापेक्ष लिंक ठीक काम करेंगे।

यदि एचटीएमएल स्ट्रिंग गतिशील रूप से स्थिर होने के बजाय आपके जावा कोड द्वारा उत्पन्न होती है, तो सर्गेई का समाधान शायद सबसे अच्छा है।

+0

आप कैसे याद में एक BufferedImage के लिए यह करने के लिए जानते हैं की कोशिश करो? – alistair

+0

@ एलीस्टेयर आप इमेजियो क्लास का उपयोग कर सकते हैं, इसमें बफर्ड छवियों को पढ़ने का एक तरीका है। –

10

आप जावा वर्ग के रूप में ही पैकेज में एक फ़ाइल में अपने स्ट्रिंग html सामग्री जगह है और बजाय engine.load(String url) विधि का उपयोग कर सकते हैं:

3

मैं सिर्फ पता चला कि HTML में <base> टैग का उपयोग कर भी काम कर देता है:

<html> 
    <head> 
     <title>The slash at the end of the href is important!</title> 
     <base href="file:///absolute/path/to/your/docroot/" /> 
    </head> 
    <body> 
     <img src="image.png"/> 
    </body> 
</html> 

आप engine.loadContent(String) तो image.png के माध्यम से ऊपर कोड को लोड तो /absolute/path/to/your/docroot/image.png से लोड किया जाएगा।

यदि आपको एकाधिक संसाधन लोड करने की आवश्यकता है तो यह विधि आसान है क्योंकि आपको केवल एक ही स्थान पर पूर्ण पथ निर्दिष्ट करना होगा।

यह जावा 8u25 के WebView के साथ परीक्षण किया गया है।

0

इस

<link href="file:css\default.css" rel="stylesheet" type="text/css" /> 
संबंधित मुद्दे