【浏览器&exe桌面应用】用javafx webview 打造自己的浏览器

背景

项目需要做一个客户端的壳,内置浏览器,访问指定 的url

采用技术

  • java 1.8

开始吧!

java环境配置略

hello world

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.concurrent.Worker.State;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

//www.qingmiaokeji.cn
public class Main extends Application {
    @Override
    public void start(final Stage stage) {
        stage.setWidth(400);
        stage.setHeight(500);
        Scene scene = new Scene(new Group());


        final WebView browser = new WebView();
        final WebEngine webEngine = browser.getEngine();

        ScrollPane scrollPane = new ScrollPane();
        scrollPane.setContent(browser);

        webEngine.getLoadWorker().stateProperty()
                .addListener(new ChangeListener<State>() {
                    @Override
                    public void changed(ObservableValue ov, State oldState, State newState) {

                        if (newState == Worker.State.SUCCEEDED) {
                            stage.setTitle(webEngine.getLocation());
                        }

                    }
                });
        webEngine.load("http://www.baidu.com");

        scene.setRoot(scrollPane);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

效果

在这里插入图片描述

您可以使用JavaFXWebView组件来加载网站并接受所有证书。下面是一个简单的示例代码: ```java import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.concurrent.Worker; import javafx.scene.Scene; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.Stage; public class WebViewAcceptAllCertificatesExample extends Application { @Override public void start(Stage primaryStage) { WebView webView = new WebView(); WebEngine webEngine = webView.getEngine(); // 设置信任所有证书 webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() { @Override public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) { if (newValue == Worker.State.READY) { webEngine.setCreatePopupHandler(handler -> { WebView popupView = new WebView(); WebEngine popupEngine = popupView.getEngine(); // 设置信任所有证书 popupEngine.setCreatePopupHandler(innerHandler -> { WebView innerPopupView = new WebView(); WebEngine innerPopupEngine = innerPopupView.getEngine(); innerPopupEngine.setCertificateCheck((message, sslException) -> { return WebEngine.Listener.CertificateCheck.valueOf(true); }); return innerPopupView; }); return popupView; }); webEngine.setCertificateCheck((message, sslException) -> { return WebEngine.Listener.CertificateCheck.valueOf(true); }); } } }); webEngine.load("https://example.com"); Scene scene = new Scene(webView, 800, 600); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 这个例子中,我们使用了WebView和WebEngine来加载网站并在加载过程中接受所有证书。通过设置`webEngine.setCertificateCheck()`方法返回`WebEngine.Listener.CertificateCheck.valueOf(true)`,我们告诉WebView接受所有证书。 请注意,接受所有证书可能会导致安全风险,请谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员石磊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值