JavaFX WebEngine
JavaFX教程 - JavaFX WebEngine
JavaFX 提供与 HTML5 内容互操作的功能。
JavaFX 中的底层网页渲染引擎是名为 WebKit 的流行的开源API。此 API 用于 Apple 的 Safari 浏览器,Amazon 的 Kindle 设备,并在 Google 的 Chrome 浏览器中使用。
嵌入式浏览器使您能够在 JavaFX 应用程序中执行以下任务:
- 从本地或远程
URL
呈现 HTML - 获取网络历史记录
- 执行
JavaScript
命令 - 从
JavaScript
调用JavaFX
- 管理网络弹出窗口
WebEngine
JavaFX 提供了一个能够加载 HTML5 内容的非 GUI 组件,称为 WebEngine API
(javafx.scene.web.WebEngine
)。
这个 API 基本上是一个 WebEngine
类的对象实例,用于加载包含 HTML5 内容的文件。
要加载的 HTML5 文件可以位于本地文件系统,Web 服务器或 JAR 文件中。
使用 Web 引擎对象加载文件时,将使用后台线程来加载 Web 内容,以便它不会阻止 JavaFX 应用程序线程。
从网址载入
我们可以通过使用 WebEngine
的load()
方法从 URL
加载 Web 内容。
WebEngine
使用后台线程,坚持基于事件的编程模型。
Web 引擎可以从远程 Web 服务器异步加载 Web 内容,并在内容加载完成时通知处理程序代码。
以下代码从后台工作线程中的远程 Web 服务器加载 HTML 内容。
要监视或确定工作线程是否已完成 javafx.beans.value.ChangeListener
添加到 state
属性。
import javafx.application.Application;
import javafx.concurrent.Worker.State;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
WebEngine webEngine = new WebEngine();
webEngine.getLoadWorker().stateProperty()
.addListener((obs, oldValue, newValue) -> {
if (newValue == State.SUCCEEDED) {
System.out.println("finished loading");
}