Desde Java 8, puede utilizar JavaFX WebView Component, que también puede ser used in Swing.
Código es tan simple como:
JFXPanel jfxPanel = new JFXPanel(); // Scrollable JCompenent
Platform.runLater(() -> { // FX components need to be managed by JavaFX
WebView webView = new WebView();
webView.getEngine().loadContent("<html> Hello World!");
webView.getEngine().load("http://www.stackoverflow.com/");
jfxPanel.setScene(new Scene(webView));
});
Está respaldada por el motor WebKit (versión depende de JRE y es razonablemente al día). Pero tenga en cuenta que no es un navegador completo, por lo tanto, no cuente con el soporte de, por ejemplo, audio/video HTML5. De lo contrario, ejecuta HTML + CSS + JS tan bueno como su navegador.
Técnicamente, el motor subyacente es C++, no Java nativo. Pero está incluido en el JRE oficial de Oracle, no requiere biblioteca, tiene configuración cero, es tan multiplataforma como Java FX y se actualiza y mantiene activamente.
¿Tan bueno como Java nativo para la mayoría de los casos de uso, creo?
La siguiente información es obsoleta, ya que ahora tenemos vista Web en Java.
Probamos Cobra/Lobo, CSSBox y Flying Saucer, toda pura de Java. Otros son nativos o comerciales.
Contenido: HTML simple generado sobre la marcha (como cadena), CSS incrustado 2.1, no JS.
Relato breve: Flying Saucer es el más simple de usar y el renderizado es el más correcto, pero es mejor tener un control total sobre el contenido. De lo contrario, busque una solución nativa.
largo de la historia:
CSSBox parece ser más activo, sin embargo, parece que depende de algunas bibliotecas 3 ª parte. Por ejemplo, la demostración depende de nekohtml, que usa Apache xerces, que cambió la forma en que funciona el analizador de sax de Java 1.7 predeterminado y rompió mi programa, pero cuando lo obligo a usar las xerces integradas de Java recibo ClassCastException (InlineBox to BlockBox)
. No puedo hacer que funcione al final. Además, todavía no se ha encontrado una manera de reemplazar el documento en un BrowserCanvas
existente.
Cobra ya no se mantiene, tiene que reparar manualmente un incompatibility issue para que funcione en 1.7. También es necesario tomar Mozilla Rhino (sin usar ningún JS) pero eso es todo. Después de eso, es bastante sencillo, solo hay que pedirle a Logger que oculte los mensajes de pintura. Render es correcto y la velocidad es buena, siempre que el documento sea simple. Cuando empiezas a usar etiquetas menos comunes o diseños más complicados, Cobra se deshace rápidamente.
Flying Saucer tiene el mejor soporte de CSS de los tres a partir de la escritura (Feb 2011). La configuración es muy sencilla (por ejemplo, no es necesario configurar documentos como cobo o domparser como cssbox) tiene poca dependencia, lo que también significa que no hay javascript. Pero Flying Saucer es muy estricto sobre lo que le das de comer. La fuente debe ser un XML bien formado, por ejemplo, el estilo y el guión pueden tener que ser envueltos en CDATA y si usted usa entidades html debe declarar DTD (por lo tanto, no docype html5). Sin embargo, si está integrando contenido que puede controlar, entonces puede ser su mejor opción.
@Sean: Gracias por la respuesta, el uso de 'JEditorPane' es claro. Necesito alternativas. –