JavaFX字库精简项目开发(三)—— 装配WebView

概述

JavaFX是用于构建富互联网应用程序的Java库。使用JavaFX开发的应用程序可以在各种设备上运行,如台式计算机,手机,物联网设备,平板电脑等。最近为了巩固一下JavaFX学习成果,准备利用整个技术开发一个工具软件能够对字库进行裁剪,可以根据用户的设置自动生成精简字库,简化手动裁剪的麻烦。

技术实现

在JavaFX脚手架中集成WebView技术,可以引入Web前端技术,以增强项目的扩展性。

涉及技术

  • JavaFX8中的WebView,jfoenix8
  • html js css 基本的web技术
  • java se

功能编码

创建WebViewUtil工具类

import com.mohamnag.fxwebview_debugger.DevToolsDebuggerServer;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView;

/**
 * @author: Administrator
 * @date: 2021/03/13 23:36
 * @description:
 */
public class WebViewUtil {
    private static WebViewUtil webViewUtil;
    public static WebViewUtil getInstance(){
        if(webViewUtil==null){
            webViewUtil = new WebViewUtil();
        }
        return webViewUtil;
    }


    public WebEngine webEngine;
    public WebEngine initCenterWebView(WebView centerWebView, String pageName) {
        //获取Engine
        if (webEngine==null){
            webEngine = centerWebView.getEngine();
        }
        try {
            DevToolsDebuggerServer.startDebugServer(webEngine.impl_getDebugger(), 51742);
        } catch (Exception e) {
            e.printStackTrace();
        }
        com.sun.javafx.webkit.WebConsoleListener.setDefaultListener(new com.sun.javafx.webkit.WebConsoleListener() {
            @Override
            public void messageAdded(WebView webView, String message, int lineNumber, String sourceId) {
                System.out.println("Console: " + message + " [" + sourceId + ":" + lineNumber + "] ");
            }
        });

        webEngine.setJavaScriptEnabled(true);
        //获取当前Java版本
        System.out.println("Java Version:" + System.getProperty("java.runtime.version"));
        //获取当前JavaFx版本
        System.out.println("JavaFXersion:" + System.getProperty("javafx.runtime.version"));
        //获取当前系统版本
        System.out.println("OS:" + System.getProperty("os.name") + "," + System.getProperty("os.arch"));
        //获取WebKit内核版本
        System.out.println("User Agent:" + centerWebView.getEngine().getUserAgent());
        //获取页面路径
        String mainUrl = getClass().getResource("/pages/layout/"+pageName).toExternalForm();
        //获取页面alert弹窗和重新加载页面
        centerWebView.getEngine().setOnAlert((WebEvent<String> wEvent) -> {
            //打印页面弹窗
            System.out.println("Alert Event  -  Message:  " + wEvent.getData());
            if (wEvent.getData().equals("Awesome123123")) {
                //重新加载页面
                webEngine.load(getClass().getResource("/pages/layout/test.html").toExternalForm());
            }
            if (wEvent.getData().equals("123")) {
                webEngine.load(getClass().getResource("/pages/layout/demo.html").toExternalForm());
            }
        });
        //初始化
        webEngine.load(mainUrl);
        return webEngine;
    }
}

构建WebEngine加载html页面

WebViewUtil webViewUtil = WebViewUtil.getInstance();
        webEngine = webViewUtil.initCenterWebView(centerWebView, R.menuviewUrl1);

在pages.layout目录下引入前端文件

在这里插入图片描述

总结

以上已经完成对webView组件的引入,此时的javaFX应用相当于一个嵌入式浏览器,我们可操作
系统目录等操作弥补使用浏览器的不足。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NewTech精选

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

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

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

打赏作者

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

抵扣说明:

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

余额充值