Estou tentando fazer uma aplicação onde eu quero rodar uma pagina do localhost no webView, bom eu consegui mas o problema é que não roda javascript(roda php e lê o banco de dados, mas não javascript). Ai abaixo esta o código fonte se alguém puder me ajudar?
OBS: so encontro para android e não esta dando certo e estou usando netbeans.
private void createJFXContent() {
WebView webView = new WebView();
webView.getEngine().load("http://localhost:8080/adm/");
Scene scene = new Scene(webView);
jfxPanel.setScene(scene);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
NewFXMain swingApp = new NewFXMain();
SwingUtilities.invokeLater(swingApp::createAndShowWindow);
}
usa o jxbrowser, esse webview do java swing nao suporta muita coisa.
Nesse repo eu fiz um “clone” do safari. Se vc der uma olhada nele vai conseguir entender a ideia. Caso nao queira olhar, acessa pelo menos só pra pegar as libs e a licença q fiz.
No seu caso basicamente vai ser isso:
public Browser browser;
public BrowserView view;
private void openWebViewOnPanel(JPanel panel){
BrowserUtil.setVersion(Version.V6_22);
BrowserPreferences.setChromiumSwitches("--disable-gpu", "--disable-software-rasterizer", "--disable-web-security", "--allow-file-access-from-files");
panel.add(view, BorderLayout.CENTER);
browser = new Browser();
view = new BrowserView(browser);
browser.loadURL("http://localhost:8080/adm/");
}
Agora se vc quiser abrir um jframe ao inves de colocar num jpanel:
public Browser browser;
public BrowserView view;
private void setUpCache() {
String perfil = "C:\\alguma_pasta\\nome_app\\";
BrowserContextParams params = new BrowserContextParams(perfil);
BrowserPreferences.setChromiumSwitches("user-data-dir=" + perfil);
BrowserContext context = new BrowserContext(params);
}
private void setUpBrowser() {
//Licença do JX
BrowserUtil.setVersion(Version.V6_22);
setUpCache();
//caso vc queira guardar o cache, senão, só apagar a linha acima.
browser = new Browser(context);
view = new BrowserView(browser);
createJFrame();
browser.loadURL("http://localhost:8080/adm/");
}
private void createJFrame() {
JFrame frame = new JFrame();
frame.add(view, BorderLayout.CENTER);
frame.setSize(800, 600); //seta o tamanho que o jframe vai iniciar
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null); //centraliza o jframe
frame.setExtendedState(6); //deixa o frame maximizado
frame.setUndecorated(true); //remove a barra q tem os botoes: close, max, min
frame.setVisible(true);
}
jxbrowser é bacana, tem recursos legais,mas para projeto comercial é pago.
WebView é grátis, tem menos liberdade é verdade , mas em relação a rodar JavaScript dentro, isso ele tira de letra.
E também usar o JavaFX dentro do Swing, infelizmente a performance não é tão boa.