Ir al contenido principal

Quiéres estos diseños en tu ropa o en diferentes productos?

Publicidad

Tutorial utilizando el navegador web de JavaFX


 

Un saludo a todos, hoy les explicaré en este tutorial como utilizar las librerías de JavaFX para visualizar nuestras páginas web locales así como remotas tal como lo hacemos con nuestro navegador web de preferencia. Hay que tomar en cuenta que JavaFX no permite ejecutar más de una instancia de la clase "webEngine" por lo que solo podremos ver un sitio a la vez.

La clase "WebView" es la que nos permite renderizar las páginas HTML que deseemos, esta clase ya contiene un objeto "WebEngine" que es el que se encarga de gestionar la carga del contenido de nuestra página, los estilos, JavaScript, etc. Y "WebView" lo renderiza y nos permite observarla en nuestra ventana.

Veamos un ejemplo simple de su uso.

public class WebBrowser extends Application {

    public void start(stage s){

        BorderPane root = new BorderPane();
        WebView view = new WebView();
        view.getEngine().load("https://www.google.com");
        root.setCenter(view);
        Scene scene = new Scene(root);
        s.setScene(scene);
        s.show();

    }

    public static void main(String[] args){

        launch(args) ;

    }

}

Cargando páginas HTML locales

Esto es todo lo que necesitas para que puedas ver una página HTML en tu aplicación Java. En este código creamos un objeto "WebView" del cual obtenemos la instancia de "WebEngine" e invocamos el método "load" al cual le pasamos como parámetro un "String" con la dirección web que deseemos, ahora si necesitamos ver una página HTML local, haremos lo siguiente.

view.getEngine().load(Paths.get("/dirección/del/archivo.html").toUri().toString())

Obtenemos la dirección del archivo usando la clase "Paths" y convertimos a "URI" y luego a "String" que es el tipo de dato que se requiere.

Siguiendo el progreso de carga de una página HTML

También es posible que necesites saber el progreso de carga de la página web, en este caso debes obtener un objeto "Worker" el cual permitirá conocer si "WebEngine" se está ejecutando o ha fallado.

Worker<?> loadWorker = view.getEngine().getLoadWorker()

Y ahora escuchamos de la variable "stateProperty" los cambios que ocurran en el proceso de carga.

loadWorker.stateProperty().addListener(new ChangeListener<Worker.State>(){

    public void changed(ObsevableValue<extends State> val, State oldState, State newState){

        if(newState == Worker.State.CANCELLED){

            //la carga se canceló

       

        if(newState == Worker.State.FAILED){

            //falló durante la carga

       

         if(newState == Worker.State.READY){

            //listo para ser ejecutado

       

        if(newState == Worker.State.RUNNING){

            //empezó a ejecutarse

        }

         if(newState == Worker.State.SCHEDULED){

            //programado para ejecutarse

       

        if(newState == Worker.State.SUCCEEDED){

            //completó la carga exitosamente

        }

    

})

Cada vez que la variable "stateProperty" de "loadWorker" cambie, verificaremos en que estado se encuentra el proceso de carga de nuestra página, y si es necesario podemos agregar algún código que necesitemos en cada caso.

La clase "WebEngine" posee muchas más funciones que nos permiten controlar muchos elementos de este motor web, pero por ahora lo dejaré hasta aquí, si deseas que escriba más sobre esto puedes dejármelo en los comentarios, también les dejo una pequeña aplicación de práctica que hice por si se sienten interesados en probarla.

¡Hasta la próxima!.

Comentarios