2014-10-19 214 views
0

以下是我的代碼,每件事情都很好我可以加載一個遠程頁面我可以把HTML內容,但我的img標籤顯示一個X標誌,意味着它無法加載圖像。JavaFX:在WebView中img標籤沒有加載本地圖像

注:我的圖片都位於同一個封裝類JavaFX文件夾中的笑臉,我可以列出所有的圖像是指沒有與路徑

import java.awt.BorderLayout; 
import java.io.File; 
import javafx.application.Platform; 
import javafx.embed.swing.JFXPanel; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

    public class JavaFX { 

    static WebView webView; 
    static WebEngine webEngine; 
    static String imgs = ""; 
    public JavaFX() { 
     File f = new File(getClass().getResource("/Smiley").getFile()); 
     for (File fs : f.listFiles()) { 
      imgs += "<img src=\""+fs+"\" width='50' />"; 
     } 
     System.out.println(imgs); 
    } 

    private void initAndShowGUI() { 
     // This method is invoked on Swing thread 
     JFrame frame = new JFrame("FX"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(new BorderLayout()); 
     final JFXPanel fxPanel = new JFXPanel(); 
     frame.add(fxPanel, BorderLayout.CENTER); 
     frame.setVisible(true); 
     frame.setSize(800, 800); 

     Platform.runLater(new Runnable() { 
      @Override 
      public void run() { 
       initFX(fxPanel); 
      } 
     }); 
    } 

    private void initFX(final JFXPanel fxPanel) { 
     Group group = new Group(); 
     Scene scene = new Scene(group); 
     fxPanel.setScene(scene); 
     webView = new WebView(); 

     group.getChildren().add(webView); 
     webEngine = webView.getEngine(); 
     webEngine.loadContent("<div id='content'>"+imgs+"</div>");  
     } 

    public static void main(final String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JavaFX fx = new JavaFX(); 
       fx.initAndShowGUI(); 
      } 
     }); 
    } 
    } 

Follwing問題是輸出

Output of the above program

回答

1

謝謝你們的幫助,我得到了以下非常簡單的解決方案

imgs += "<img src=\""+fs.toURI()+"\" width='50'>"; 

圖像路徑必須被轉換以URI或URL使webView能夠讀取它

0

你可以試試這個:

URL url = getClass().getResource("Smiley.png"); 
File file = new File(url.getPath()); 
+1

解釋如何使用代碼,爲什麼這可能是一個解決方案的問題 – 2014-10-19 12:11:02

+0

@Sanket Pipariya感謝您的答覆問題不在路徑正確的路徑中,我可以列出目錄中的所有文件,但它不會在使用img標籤的WebView中呈現! – Muhammad 2014-10-19 12:12:31

+0

親愛的@RuneFS和Sanket Pipariya我解決了這個問題在這裏看到http://stackoverflow.com/a/26451542/1966247 – Muhammad 2014-10-19 14:35:24

0

你可能需要通過getClass().getResource()讀取文件路徑也:

for (File fs : f.listFiles()) { 
     imgs += "<img src=\"" + getClass().getResource(fs.getName()) + "\" width='50' />"; 
    } 
+0

感謝親愛的你的幫助:),我解決了這個問題請看這裏http://stackoverflow.com/a /1966247分之26451542 – Muhammad 2014-10-19 14:33:42

相關問題