当前位置: 首页 > news >正文

基于 Java 的浏览器——JxBrowser使用分享

软件介绍

JxBrowser 是一个基于 Java 的浏览器,它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架,如 Swing、JavaFX 和 SWT,使得在 Java 应用程序中嵌入浏览器组件变得简单。

JxBrowser 是一个适用于多种用途的嵌入式浏览器,它可以被用于开发混合应用程序、结账和自助服务终端、数字广告、游戏、网页抓取、自动化脚本,以及桌面和平板电脑应用程序。以下是 JxBrowser 在这些不同应用场景中的具体应用:

混合应用程序

JxBrowser 可以被集成到混合应用程序中,为用户提供丰富的网页内容,同时允许开发者利用 Java 和其他后端技术来处理业务逻辑。

结账&自助服务终端

自助服务终端和结账系统可以使用 JxBrowser 来展示网页形式的用户界面,处理交易和信息查询,同时保持用户界面的现代性和易用性。

数字广告

JxBrowser 可以用于创建交互式数字广告,包括那些需要实时更新内容或与用户互动的广告。

游戏

游戏开发者可以使用 JxBrowser 来创建基于网页的游戏,或者在游戏中集成网页内容,例如游戏内商店或社区论坛。

网页抓取

JxBrowser 可以用于开发网页抓取工具,通过模拟用户交互来获取网页数据,支持自动化测试和数据挖掘应用。

自动化

自动化脚本和工具可以利用 JxBrowser 来模拟用户在网页上的操作,进行自动化测试、监控或其他任务。

桌面及平板电脑应用程序

JxBrowser 可以被集成到桌面或平板电脑应用程序中,提供内嵌的网页浏览功能,从而扩展应用程序的功能性。

官方文档

https://jxbrowser-support.teamdev.com/zh/docs/tutorials/ide/intellij-idea.html#%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F

功能和特性

  1. 配置文件管理:JxBrowser 允许用户管理 Chromium 配置文件,包括导航历史、cookie、缓存、密码等用户数据。
  2. 浏览器实例创建:通过 Profile.newBrowser() 方法可以创建新的 Browser 实例。如果使用 Engine.newBrowser(),浏览器将在默认配置文件下创建。
  3. 浏览器视图嵌入:JxBrowser 可以在 Swing、JavaFX 和 SWT 应用程序中嵌入显示网页内容的可视化组件。
  4. 导航功能:支持加载 URL 和文件、过滤导航请求、处理导航历史等。
  5. 内容显示:JxBrowser 可以显示各种类型的内容,包括图片、视频、PDF、Flash 等,并支持访问网页的 HTML 内容。
  6. DOM 访问:允许访问 DOM 文档、查找元素、修改 DOM 结构等。
  7. 弹出窗口处理:描述了如何处理、显示或抑制弹出窗口。
  8. 文件下载管理:提供了管理文件下载、跟踪下载进度、在下载完成时获得通知等功能。
  9. 网络功能:包括代理、网络事件、身份验证、TLS、客户端证书身份验证等。
  10. 缓存管理:支持多种缓存类型,如 HTTP 缓存、Blink 缓存、HTML5 应用程序缓存等。
  11. Cookie 管理:提供了获取、修改和删除 cookie 的功能。
  12. 身份验证处理:支持处理 Proxy、Basic、Digest 或 NTLM 身份验证请求。
  13. 插件支持:支持 Chromium 插件,允许获取有关所有已安装和可用的 Chromium 插件的信息。
  14. 打印功能:支持使用 JavaScript 或 JxBrowser API 进行网页打印。
  15. 密码管理:提供了保存、更新和管理用户在新在线表单中输入的密码的功能。
  16. 用户数据配置文件:描述了如何保存、更新和管理用户数据,如输入到网络表单中的名字、地址、电子邮件等。
  17. 信用卡管理:介绍了如何保存、更新和管理信用卡信息。
  18. 媒体支持:概述了支持的视频和音频格式,描述了如何控制音频、获取有关可用网络摄像头和麦克风等信息。
  19. 缩放控制:允许缩放网页内容,并在缩放级别更改时获得通知。
  20. 拼写检查器:提供了配置语言以进行拼写检查、在自定义词典中添加或删除单词、禁用拼写检查等功能。
  21. 部署和构建:描述了如何在 Java 应用程序中部署 JxBrowser,以及如何使用 JxBrowser 所使用的 Chromium 构建。
  22. 日志记录和崩溃转储收集:提供了配置 JxBrowser 日志记录和收集崩溃转储的方法。
    JxBrowser 提供了强大的功能和灵活性,使其成为开发高性能、功能丰富的桌面应用程序的理想选择。

Java Swing集成JxBrowser

import static com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.view.swing.BrowserView;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;public class HelloWorld {public static void main(String[] args) {// Creating and running Chromium engine.Engine engine = Engine.newInstance(HARDWARE_ACCELERATED);Browser browser = engine.newBrowser();SwingUtilities.invokeLater(() -> {// Creating Swing component for rendering web content// loaded in the given Browser instance.BrowserView view = BrowserView.newInstance(browser);// Creating and displaying Swing app frame.JFrame frame = new JFrame("Hello World");// Close Engine and close the app window.frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {engine.close();}});frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);JTextField addressBar = new JTextField("https://www.google.com");addressBar.addActionListener(e ->browser.navigation().loadUrl(addressBar.getText()));frame.add(addressBar, BorderLayout.NORTH);frame.add(view, BorderLayout.CENTER);frame.setSize(800, 500);frame.setLocationRelativeTo(null);frame.setVisible(true);browser.navigation().loadUrl(addressBar.getText());});}
}

JavaFX集成JxBrowser

import static com.teamdev.jxbrowser.engine.RenderingMode.*;import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.view.javafx.BrowserView;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;/*** 这个示例演示了如何创建和初始化 Engine,创建 Browser* 将其嵌入到一个 JavaFX 场景中,并显示现代网络内容,* 如 YouTube 视频。*/
public final class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
Engine engine = Engine.newInstance(HARDWARE_ACCELERATED);
Browser browser = engine.newBrowser();
BrowserView view = BrowserView.newInstance(browser);Scene scene = new Scene(new BorderPane(view), 700, 500);
primaryStage.setTitle("JavaFX BrowserView");
primaryStage.setScene(scene);
primaryStage.show();browser.navigation().loadUrl("https://youtu.be/BO8lX3hDU30");
}
}

相关文章:

  • Sass是什么?有哪些优缺点?
  • 【代码随想录算法训练营第37期 第十七天 | LeetCode110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和】
  • python数据类型之列表
  • 海外媒体发稿的关键步骤和投稿策略:如何撰写高质量的新闻稿?国外软文发布平台有哪些?
  • 如何同一局域网下ssh远程登录
  • 提取COCO 数据集的部分类
  • 移动云ECS主机:未来云计算的驱动力
  • 局部放电试验变频电源
  • 牛客NC391 快乐数【simple 模拟法 Java/Go/PHP】
  • el-table 合并单元格_以合并属性值相同行为例
  • ysoserial下载和使用
  • PHP开发安全:专家级代码审计策略与方法
  • 前端vue 动态加载ts文件,动态调用ts内的方法
  • 【算法】前缀和算法——和为k的子数组之和
  • 在Windows操作系统中克隆SD卡的简单方法!
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • CEF与代理
  • Django 博客开发教程 8 - 博客文章详情页
  • es6--symbol
  • java2019面试题北京
  • nginx 负载服务器优化
  • PHP 的 SAPI 是个什么东西
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • python 装饰器(一)
  • text-decoration与color属性
  • XForms - 更强大的Form
  • 分布式熔断降级平台aegis
  • 强力优化Rancher k8s中国区的使用体验
  • 巧用 TypeScript (一)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 函数计算新功能-----支持C#函数
  • 数据库巡检项
  • ​flutter 代码混淆
  • ​你们这样子,耽误我的工作进度怎么办?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)球球大作战
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (solr系列:一)使用tomcat部署solr服务
  • (SpringBoot)第二章:Spring创建和使用
  • (补)B+树一些思想
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)shell调试方法
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net CHARTING图表控件下载地址
  • .net framework4与其client profile版本的区别
  • .NET 分布式技术比较
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /usr/bin/env: node: No such file or directory