Panama Hitek Logo
Panama Hitek Logo

Visualización de páginas web en Java

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.

 

Antony García González
Antony García González
Ingeniero Electromecánico, egresado de la Universidad Tecnológica de Panamá. Miembro fundador de Panama Hitek. Entusiasta de la electrónica y la programación.

Posts relacionados

18 COMENTARIOS

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

    • 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);

  2. 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?

  3. 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?

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

    • Hola. Hay cosas que no funcionarán. Recomendaría que busques dentro de Java FX a ver que opciones hay mejores que estas. Swing tiene sus limitaciones

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Post relacionados