JavaFx 简易加载 Web 内容

参考:https://www.w3cschool.cn/java/javafx-webview.html

JavaFx 具有一个 WebView,最新版本支持较多的 HTML5、CSS3 和 ES6。以 JDK 8 为例,其 JavaFx 对 Web 规范的支持度大概与早期的 Chrome 40 相当。

JavaFx WebView 的 UA 为:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/538.19 (KHTML, like Gecko) JavaFX/8.0 Safari/538.19

简单调用 Demo 如下(来自 w3school.cn)。

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.concurrent.Worker.State;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Browser extends Application {
  private static String uri = "https://yanwen.blog/";

  @Override
  public void start(final Stage stage) {
    // stage.setWidth(1000);
    // stage.setHeight(800);
    Scene scene = new Scene(new Group());


    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();

    ScrollPane scrollPane = new ScrollPane();
    scrollPane.setContent(browser);

    webEngine.getLoadWorker().stateProperty()
        .addListener(new ChangeListener<State>() {
          @Override
          public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
            if (newState == Worker.State.SUCCEEDED) {
              stage.setTitle(webEngine.getLocation());
            }
          }
        });
    webEngine.load(uri);

    scene.setRoot(scrollPane);

    stage.setScene(scene);
    stage.show();
  }

  public static void main(String[] args) {
    Browser.uri = args.length == 1 ? args[0] : Browser.uri;

    launch(args);
  }
}

打开 github.com 的效果如下。

 

猜测 JavaFx 中的 WebView 应该是基于 Webkit 的,所以也可以打开本地的 Web 资源(uri:file://filepath)。

参考:

  1. https://www.w3cschool.cn/java/javafx-webview.html

作者: YanWen

Web 开发者

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s