setstyle how create java webview javafx-2

how - ¿Cómo llegar a css y a los archivos de imagen desde la página html cargada por javafx.scene.web.WebEngine#loadContent?



set stylesheet javafx (4)

Tengo un contenido HTML de cadena que se carga en el webEngine por loadContent() . También tengo algunos css y archivos de imágenes utilizados en esta página. Aunque puse estos archivos en el mismo paquete de la clase Java, la página cargada no puede encontrarlos. Busqué docs API y web, pero no encontré ninguna solución similar. ¿Cómo cargo estos archivos?


Acabo de descubrir que usar la etiqueta <base> en el HTML también hace el truco:

<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>

Si carga el código anterior a través de engine.loadContent(String) entonces image.png se cargará desde /absolute/path/to/your/docroot/image.png .

Este método es más fácil si necesita cargar múltiples recursos, ya que solo debe especificar la ruta absoluta en un solo lugar.

Esto ha sido probado con WebView de Java 8u25.


Debes establecer tus rutas de acceso locales en html string para loadContent siguiente manera:

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


Prueba esto

<link href="file:css/default.css" rel="stylesheet" type="text/css" />


Puede colocar el contenido de html de cadena en un archivo en el mismo paquete que la clase Java y usar el engine.load(String url) lugar:

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

Al hacer esto, todos los enlaces relativos en la página html se resolverán con recursos (por ejemplo, css y archivos de imagen) en su paquete Java.

Tenga en cuenta que si está cargando un recurso que se encuentra en un archivo jar, el protocolo jar: no comprende los enlaces relativos con los especificadores principales. Por ejemplo, <img src="../images/image.png"/> no funcionará, pero <img src="/images/image.png"/> o <img src="images/image.png"/> siempre y cuando ponga la imagen en la ubicación adecuada en el archivo jar). El file: protocolo no tiene tales restricciones y .. enlaces relativos funcionarán bien cuando los recursos se carguen con él.

Si la cadena html se genera dinámicamente mediante su código java en lugar de estático, entonces la solución de Sergey es probablemente la mejor.