LoginSignup
0
5

More than 5 years have passed since last update.

JavaでWebページを表示する方法

Posted at

クロスアビリティ Winmostarサポートチームです。

1. JavaでWebページを表示

JavaのデフォルトGUIであるJavaFXでは、Webページを表示する機能があります。この記事では、その方法を紹介します。Webページは、WebViewというクラスを使って表示できます。以下はサンプルコードです。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebTest extends Application {

    private WebView webView;

    @Override
    public void start(Stage stage) {
        this.webView = new WebView();
        WebEngine webEngine = webView.getEngine();
        webEngine.load("https://x-ability.co.jp");

        BorderPane pane = new BorderPane(this.webView);
        Scene scene = new Scene(pane, 500, 500);

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

    public static void main(String[] args) {
        launch(args);
    }
}

2. URLの更新

WebViewに設定したURLを更新するには、WebEngine#loadを使います。

    private void updateURL(String url) {
        WebEngine webEngine = this.webView.getEngine();
        webEngine.load(url);
    }

3. ページを進む/戻る

表示中のページを進むまたは戻るときは、WebHistory#goを使います。

    private void goForward() {
        WebEngine webEngine = this.webView.getEngine();
        WebHistory webHistory = webEngine.getHistory();
        webHistory.go(+1);
    }

    private void goBackward() {
        WebEngine webEngine = this.webView.getEngine();
        WebHistory webHistory = webEngine.getHistory();
        webHistory.go(-1);
    }

4. ウィンドウを閉じる

Webページからウィンドウを閉じるイベントが発生した場合に、JavaFXのウィンドウを閉じる処理を実装します。WebEngine#setOnVisibilityChangedを使います。

    @Override
    public void start(Stage stage) {
        ... 省略 ...
        stage.show();

        webEngine.setOnVisibilityChanged(event -> {
            if (!event.getData()) {
                stage.hide();
            }
        });
    }

5. ポップアップを表示する

Webページからポップアップを表示するイベントが発生した場合に、JavaFXにて新規ウィンドウを表示する処理を実装します。WebEngine#setCreatePopupHandlerを使います。

    @Override
    public void start(Stage stage) {
        ... 省略 ...
        stage.show();

        webEngine.setCreatePopupHandler(config -> {
            WebView webView2 = new WebView();
            WebEngine webEngine2 = webView2.getEngine();
            webEngine2.load("about:blank");

            BorderPane pane2 = new BorderPane(webView2);
            Scene scene2 = new Scene(pane2, 500, 500);

            Stage stage2 = new Stage();
            stage2.setScene(scene2);
            stage2.show();

            return webEngine2;
        });
    }
0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5