Páginas da web no seu app java com JavaFX

E ai galera Geek beleza?

Recentemente, estou desenvolvendo um projeto, que necessitará mostrar uma página da web “embedada” no aplicativo, porém, estas tem de ser alteradas por scripts. Ai veio o problema, segundo as especificações do HTML (W3C) não é possível “rodar” scripts em iframes que a URL seja de outro domínio (aka. Cross-domain policy)

Então uma das alternativas que encontrei fora utilizar o Adobe Air com HTML5 e Javascript, pois nele você pode utilizar o iframe em sandbox (no html5 também, mas se alguém consegue manipular outro site desse jeito, deixa ai nos comentários), “estava lindo”, até eu compilar o programa e ver que ao acessar a pasta do programa, quando instalado, era possível ver todo o código fonte do programa… É aquela hora que dá vontade de largar programação e ir vender Avon! Kkkkkkkk

Mas eu sempre gostei muito de programar em Java, e Googlando, vi que na biblioteca JavaFX, há uma classe chamada WebView que carrega a página dentro do aplicativo e permite que seja executado scripts na página carregada. Bazinga!

Então para Carregar uma página no seu Aplicativo Java é simples:

WebView browser = new WebView(); // Chama classe webview

WebEngine webEngine = browser.getEngine(); // Inicia o “motor” do navegador

webEngine.load("http://comoqfaz.com"); // Diz qual site carregar

A classe WebEgine tem um método, executeScript, que permite a execução de script’s na página carregada, então no código abaixo adicionamos um listener (verificador) que verifica se a página já foi carregada na nossa aplicação:

webEngine.getLoadWorker().stateProperty().addListener(

        new ChangeListener<State>() {

            public void changed(ObservableValue<? extends State> ov,

                State oldState, State newState) {

                    toolBar.getChildren().remove(showPrevDoc);

                    if (newState == State.SUCCEEDED) {

/* AQUI A PÁGINA JÁ ESTÁ CARREGADA, ENTÃO VAMOS EXECUTAR UM JAVASCRIPT */

webEngine.executeScript(“document.title = \”ClubedosGeek.com alterou o titulo do página\”;”);

// Alteramos o titulo da página!

                    }

                }

            }

    );

Agora você pode mostrar e/ou modificar qualquer página da Web no seu aplicativo! Mas, tio João, fiz um layout massa no notepad em HTML5, eu poderia usar como interface de um programa?

Sim, meu caro, você só precisará passar o endereço completo para seu html, para isso, sua página (HTML, Javascript, CSS, Images) devem estar (preferencialmente) na pasta src do seu projeto, e então, modifique a linha webEngine.load[….] por

webEngine.load( getClass().getResource(“index.html”).toExternalForm(

);

Onde index.html é a página que você deseja mostrar!

Então é isso pessoal, dúvidas, é só comentar, se gostou compartilha…

Um abraço nos machos e uma fungada nos das meninas! ‘Astá la vista macho réiiio’ 😀

– Contribuição João Santiago.

Elias Neto

Formado em Análise e Desenvolvimento de Sistemas pela UniLeão - Juazeiro do Norte-CE, Fundador do site Clube dos Geeks e criador de conteúdo para o site.

Você pode gostar...

1 Resultado

  1. Bruno disse:

    Boa noite!

    Cara em um projeto da faculdade tenho que fazer um aplicativo android, mas tenho a idéia ja desenvolvida no html5, com javascript e css, pondo para abrir numa webview a pagina abriria normalmente?

    Me da uma ajuda aê.
    se possivel um exemplo pratico.
    E-mail: brunosousar@hotmail.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *