Visualización de páginas web en Java

2
2096

Muchas veces me toca hacer cosas en Java que no se hacer y se hace necesario investigar cómo lograrlo. La visualización de páginas web en Java es una de ellas. Por falta de tiempo, pocas veces tengo la oportunidad de documentar cada cosa que aprendo justo en el momento en el que llegan a mi nuevos conocimientos. Esta es una tarea que a veces debe esperar semanas, meses e incluso años.

Recientemente en un proyecto se ha presentado la necesidad de visualizar una página web dentro de una aplicación en Java. Cuando me dispongo a investigar sobre el tema me doy cuenta que existe el elemento JEditorPanel. Hice las pruebas y sí funcionó. Sin embargo, aunque efectivamente podemos visualizar HTML con esta herramienta, su desempeño no es óptimo. Las pruebas que llevé a cabo fueron con archivos HTML locales, sin CSS.

Para lograr la visualización de páginas web en Java se necesita un poco más que los recursos con los que cuenta una instalación normal de Java. Investigando un poco más sobre el tema me doy cuenta que existen opciones viables para la visualización de páginas web (locales o remotas) en JavaFX. Luego de llevar a cabo algunas pruebas con esta técnica, logré insertar en un JPanel un elemento interactivo en el cual es posible lograr lo que queremos.

En este artículo explicaremos de forma breve cómo lograr esto, proporcionando código de ejemplo e instrucciones de implementación.

WebEngine y JFXPanel en JavaFX

JavaFX es un set de paquetes y herramientas que le permiten a los desarrolladores diseñar, crear, probar y depurar aplicaciones con interfaces gráficas de usuarios. En Java estamos acostumbrados al uso de los componentes de la clase Swing (y JavaAWT) para el diseño de interfaces de usuario básicas. Para el diseño avanzado de interfaces de usuarios existe JavaFX.

La siguiente clase (llamada SwingBrowser) ha sido diseñada para permitir el uso de un elemento WebEngine dentro de un JFXPanel, el cual puede ser insertado dentro de un JPanel de Swing.

Esta clase hereda la clase JFXPanel, por lo cual las instancias de esta clase serán objetos de la clase JFXPanel. Para utilizar esta clase haremos lo siguiente:

  • Creamos un proyecto en Java, donde agregamos un JFrame y un JPanel. Al agregar una instancia de la clase SwingBrowser (ver código de arriba) dentro del JPanel, tendremos un navegador web empotrado en nuestra aplicación.
  • El código para la inserción del visualizador web dentro del JPanel sería el siguiente:

Ahora mostramos una imagen con una vista general del proyecto de ejemplo en el cual ponemos a prueba el código presentado.

visualización de páginas web en java

Veamos el resultado de ejecutar este código:

webpanel java

Hemos logrado la visualización de páginas web en Java. La imagen muestra el sitio de Panama Hitek mostrado en una ventana que consiste en un JFrame y un JPanel. Los archivos de este ejemplo se encuentran disponibles en nuestro repositorio de Github.

Esperamos que la información presentada sea de utilidad para ustedes. Saludos.

 

  • Manuel Gaxiola

    🙂 (y)

  • Antony García González