前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第30篇:swing组件添加javafx的webview浏览器组件方法

第30篇:swing组件添加javafx的webview浏览器组件方法

作者头像
ABC_123
发布2022-12-06 10:40:31
2.7K0
发布2022-12-06 10:40:31
举报
文章被收录于专栏:网络安全abc123

Part1 前言

Swing是一个用于开发java图形界面程序的工具包,一直用着挺顺手的,美中不足就是没有好用的浏览器组件,只能引用第三方jar包,比如说JxBrowser、DJ Native Swing等,但是都不能满足我的需要。javafx中的webview浏览器组件非常好用,又是jdk官方出品的,非常稳定。目前看来拖拽swing组件最好用的工具应该是netbeans,可惜netbeans不支持拖拽webview这个图形控件。后续经过一系列测试,找到了一个简单的在netbeans拖拽图形控件的同时,实现swing调用webview组件的简单方法,而且代码量很少。

Part2 技术研究过程

  • Swing浏览器组件踩过的坑

先讲一下用Swing引用第三方jar包开发浏览器踩过的坑,大家可以参考一下。

1 JEditorPane这个组件是swing工具包中自带的,但是它能解析的html及css非常有限,N年没更新了,很多现在的网页,加载会出问题。

2 DJ Native Swing这个效果也不错,我捣鼓了半天,就是使用起来很麻烦,它的很多功能不符合我的预期,没办法在netbeans中拖拽使用

3 JxBrowser这个浏览器组件非常好用,但它是商业版的,网上已有破解方法。缺点就是,这个组件长时间不操作,会莫名其妙地卡死,偶尔还会报各种channel异常错误,我始终没解决这个问题,而且所依赖的jar太大,大概100多M。

  • Swing与Javafx的对比

在Swing图形工具包中,JFrame是一个顶层容器,JPanel是一个中间容器,JPanel上面可以放置各种Button按钮、Label标签等图形控件。有一个很形象的比喻,JFrame是一张桌子,各个组件是一盘又一盘的菜,而JPanel就是一个托盘,装了选好的菜品(组件)后放到JFrame桌子上。一个JFrame界面上可以有多个JPanel用来划分不同的区域。

在Javafx中,顶级容器是舞台Stage,也就是软件的界面窗口;Scene场景为中间容器,各种组件Button、Label成为Node节点,Node节点必须放在Scene场景中。

  • Swing添加Javafx的webview组件

Netbeans没法拖拽JFXPanel,那么我们可以这样,在JFrame上先放一个JPanel,然后手动敲代码在JPanel上添加一个JFXPanel,JFXPanel上放一个scene场景,在其上面放一个Javafx的webview组件,具体看如下操作:

JFrame-->JPanel-->JFXPanel-->scene-->webview,需要手写的代码量很少。具体操作如下:

1. netbeans拖拽画出一个JFrame窗口。

2. 在JFrame图形界面上,想要实现浏览器组件的位置放一个JPanel。

3. 手动敲代码,在JPanel上面放置一个JFXpanel,然后载入一个场景。

4. 手动敲代码,在JFXPanel上放置一个webview控件。

如下图所示,浏览器稳定运行。

javafx组件是Jdk1.8中自带的,经过不断测试,发现还是jdk官方自带的组件好用,非常稳定,没有任何报错,编写起来还简单。至此一直困扰我的swing浏览器组件编写问题完美解决!

专注于网络安全技术分享,包括红队、蓝队溯源、渗透测试、代码审计等

每周一篇,99%原创,敬请关注

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 希潭实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part1 前言
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档