Visualización de páginas web en Java

18
21295

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.

 

5 1 vote
Article Rating
Suscríbete
Notify of
guest

18 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Adriana
Adriana
4 years ago

Muy buen aporte, pero tengo ciertos problemas que no sé como resolver, al momento de ejecutar mi página pierde lo estilos, too se deforma y no sé en que o como arreglarlo, espero me puedas ayudar

Mayra
Mayra
4 years ago

hola, mi duda es:
¿es posible crear con netbeans una ventana, y en ella me permitiera abrir cualcuer tipo de ventana y pagina de windows? si es posible, ¿como serian los pasos?

José Luis Cazal
José Luis Cazal
5 years ago

buenas me funciona bien pero mi panel es rezisable y solo toma el tamaño del panel del como esta realmente y no cuando lo agrando, como puedo hacer que se auto ajuste al panel ya sea agrandando o achicando… que se adapte a cualquier cambio de tamaño del mismo?

Diego
Diego
5 years ago

Q tal gracias por el aporte pero una pregunta como le hago para que me muestre una página descargada en mi ordenador. Saludos.

Norbey
Norbey
4 years ago
Reply to  Diego

Hola,
A mi me funcionó el siguiente código

SwingBrowser browser = new SwingBrowser();
String url = System.getProperty(«user.dir»)+»\\nombre_pagina.html»;
File rec = new File(url);
browser.loadURL(rec.toURI().toString());
browser.setBounds(1, 1, jPanel1.getWidth() – 1, jPanel1.getHeight() – 1);
jPanel1.add(browser);

juan rodriguez
juan rodriguez
6 years ago

hola , me podrias ayudar hice lo mismo pero nada no carga la pagina web

Diego
Diego
6 years ago

Como haria para que me muertre una ventana emergente (ejm. en google maps, cuando debo aceptar que localice mi ubicación)

Antony García Gonzál
Antony García Gonzál
7 years ago
Antony García Gonzál
Antony García Gonzál
7 years ago
Edwin López
Edwin López
6 years ago

Excelente aporte justo lo que necesitaba, solo que cuando trato de maximizar la el Jframe no se maximiza la ventana del navegador. Pero muchas gracias por el tuto esta buenísimo

Manuel Gaxiola
Manuel Gaxiola
6 years ago

🙂 (y)