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