适合java使用的浏览框架太少,javafx的内置webview实在太难用,辛苦找到jxbroswer,还是Chromium内核!!!!真的香!!!!!!这里介绍一下6.24版本的使用过程,开发前请导入相关jar包,顺便说一句有钱请支持正版,我这里使用javafx,废话不多说直接上代码:
package com.iking.javabrowser;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class JxbroswerDome extends Application {
@Override
public void start(Stage stage) throws Exception {
//创建broswer实例
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
stage.setScene(new Scene(new BorderPane(browserView), 1000, 1000));
stage.centerOnScreen();
stage.setMaximized(true);
stage.show();
//加载地址
browser.loadURL("www.baidu.com");
//监听加载完成
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if(event.isMainFrame()){
//当前页面加载完成
}
super.onFinishLoadingFrame(event);
}
});
}
public static void main(String[] args) {
launch(args);
}
}
运行成功后效果如下:
就是这样非常简单创建一个窗体浏览器(6.x的版本一台电脑只能开一个broswer实例,7版本可以多开),但是有个问题,每次点击的时候都会弹出新窗体,这就有点尴尬了,查看官网文档后得出如下解决方案,将弹窗拦截就好,不拦截每一个窗体相当于1个单独实例运行
browser.setPopupHandler(new PopupHandler() {
@Override
public PopupContainer handlePopup(PopupParams popupParams) {
browser.loadURL(popupParams.getURL());
return null;
}
});
这样简单的窗体浏览器完成,兼容性还ok,比javafx的webview好太多了,缺点就是6.x的版本的Chromium内核太老,部分网站兼容差一些,特别是腾讯视频这种是看不了的,有条件直接上7的版本,后续跟大家讲解