JavaFX WebView的采集开发方法是什么
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"JavaFX WebView的采集开发方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaFX WebView的采集开发方法
千家信息网最后更新 2026年11月01日JavaFX WebView的采集开发方法是什么
本篇内容主要讲解"JavaFX WebView的采集开发方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaFX WebView的采集开发方法是什么"吧!
背景
最近想做一个桌面版的客户端,能够加载连接,获取源码等,主要用于快速的获取网站的栏目,便与爬虫该栏目下的最新信息。
采用技术
java 1.8
相关插件介绍
JavaFX是:
•用于创建和交付桌面应用程序的软件平台,以及可以在各种设备上运行的富Internet应用程序(RIA)。
•一组图形和媒体包,使开发人员能够设计,创建,测试,调试和部署在不同平台上一致运行的富客户端应用程序。WebView:
使用WebKit HTML技术的Web组件,可以在JavaFX应用程序中嵌入Web页面。在WebView中运行的JavaScript可以调用Java API,Java API可以调用在WebView中运行的JavaScript。
JavaFX中添加了对其他HTML5功能的支持,包括Web套接字,Web Worker和Web字体以及打印功能。JavaFX WebView:
•JavaFX WebView 是一种迷你浏览器(也称为嵌入式浏览器),它通过JavaFX 应用程序中的API提供Web查看器和完整浏览功能 。
•此浏览器基于 WebKit,这是一个支持HTML5,JavaScript,CSS,DOM渲染和SVG图形的开源Web浏览器引擎。
•WebView类是Node类的扩展。
•嵌入式浏览器从Node类继承所有字段和方法,因此它具有其所有功能。
•它封装了WebEngine对象,将HTML内容合并到应用程序的场景中,并提供应用效果和转换的属性和方法。
•在WebView对象上调用的getEngine()方法返回与之关联的Web引擎。
•构成嵌入式浏览器的类位于javafx.scene.web包中。•WebView 使开发人员能够在其Java应用程序中实现以下功能:
◦从本地或远程URL呈现HTML内容
◦支持历史记录并提供后退和前进导航
◦重新加载内容
◦将效果应用于Web组件
◦编辑HTML内容
◦执行JavaScript命令
◦执行从JavaScript到JavaFX的上行调用
◦处理事件• 除了支持CSS3和ecmascript6(ES6)之外,WebView组件还支持以下HTML5功能:
◦DOM3
◦画布
◦媒体播放
◦表单控件(除外)
◦可编辑的内容
◦历史维护
◦支持, Web引擎:
1.是一个能够一次管理一个网页的非可视对象
2.通过其API提供基本网页功能。
3.它支持用户交互,例如导航链接和提交HTML表单,但它不直接与用户交互。
4.它加载网页,创建文档模型,根据需要应用样式,并在页面上运行JavaScript。
5.它提供对当前页面的文档模型的访问,并允许Java应用程序和页面的JavaScript代码之间的双向通信。
6.它包装了一个WebPage对象,该对象提供与本机Webkit核心的交互。主要代码介绍:
主界面构造:
package org.lc.v1;
import org.lc.v1.component.WebBrowerPane;
import org.lc.v1.handle.AlertEventHandler;
import org.lc.v1.handle.PopupCallback;
import org.lc.v1.html.HtmlChangeListener;
import org.lc.v1.html.WebHistoryVisitListener;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebHistory;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class LCWebBrower extends Application {public void start(Stage stage) throws Exception { final WebBrowerPane tp = new WebBrowerPane(stage);
stage.setScene(new Scene(tp, 950, 600));
final WebView webView = new WebView();
webView.prefWidthProperty().bind(stage.getScene().widthProperty());
webView.prefHeightProperty().bind(stage.getScene().heightProperty());
final WebEngine webEngine = webView.getEngine();
final WebHistory history = webEngine.getHistory();
history.getEntries().addListener(new WebHistoryVisitListener());
webEngine.getLoadWorker().stateProperty().addListener(new HtmlChangeListener(webEngine));
webEngine.setOnAlert(new AlertEventHandler(tp));
webEngine.setCreatePopupHandler(new PopupCallback(tp));
webEngine.setJavaScriptEnabled(true);
webEngine.executeScript("location.reload(true);");
webEngine.load("加载的地址");
final Tab tab = new Tab();
tab.textProperty().bind(webEngine.titleProperty());
tab.setClosable(false);
tab.setContent(webView);
tp.addTabPage(tab);
stage.show();
}public static void main(String[] args) {
launch(args);
}
}
监听也没加载状态,获取源码、所有连接等。
package org.lc.v1.html;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker.State;
import javafx.scene.web.WebEngine;
public class HtmlChangeListener implements ChangeListener {
private WebEngine webEngine;
String html;
public HtmlChangeListener(WebEngine webEngine) {
this.webEngine = webEngine;
}
public void changed(ObservableValue extends State> observable, State oldValue, State newState) {
if (newState == State.SUCCEEDED) {
html = (String) webEngine.executeScript("document.documentElement.outerHTML");
System.out.print("succeeded");
NodeList elementBody = webEngine.getDocument().getElementsByTagName("a");
for (int i = 0; i < elementBody.getLength(); i++) {
Node aTag = elementBody.item(i);
String title = "";
if (aTag != null) {
title = aTag.getTextContent();
}
NamedNodeMap attributes = aTag.getAttributes();
String href = "";
if (attributes != null) {
Node hrefObject = attributes.getNamedItem("href");
if (hrefObject != null)
href = hrefObject.getTextContent();
}
System.out.println(title + " " + href);
}
}
}
} 到此,相信大家对"JavaFX WebView的采集开发方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
应用
应用程序
程序
支持
方法
内容
功能
浏览
浏览器
开发
对象
运行
页面
嵌入式
引擎
组件
网页
人员
代码
历史
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
中智农互联网科技
互联网科技名片
广州大一互联网络科技有限公司
互联网科技保险
科技类互联网
互联网科技集团
互联网科技ppt模板
宁夏众和广鑫互联网科技有限公司
科技类公司包括互联网吗
互联网科技和法律行业
区块链结合互联网科技
互联网领先科技宣传片
互联网风格科技公司名称
科技和互联网行业的特点
互联网科技博主张洲
恒生科技指数 中概互联网
互联网科技对化妆品行业
恒生互联网科技趋势
互联网的黑科技实验室
中关村互联网 科技集团
网络科技有限互联网
互联网与新科技
艾特科技互联网
远拓互联网科技
北京禾田雨橡互联网科技
注册互联网科技公司经营范围大全
深圳艾果互联网通讯科技
用友工业互联网科技发展
广州全民伙伴互联网科技有限公司