JavaFX: Webseiten anzeigen per WebView

WebViewLang, lang ist es her, seit dem ich den letzten Blogbeitrag gepostet habe. Sehr viel Zeit hat mich das Masterstudium in der Klausurenphase gekostet und ein privates Projekt, was ich demnächst hier vorstellen werde.
Zurück zum Thema – heute geht es um die WebView Komponente in JavaFX. Mit dieser Komponente kann man Webseiten in einer JavaFX Anwendung anzeigen. Dabei spielt es keine Rolle, ob die Webseite von einem Webserver oder lokal aus einem Jar geladen wird. Des Weiteren kann man bidirektional zwischen Java und Javascript kommunizieren und interagieren.

 

WebView und WebEngine

Der eigentliche Aufruf besteht aus 4 Zeilen.

		WebView webView = new WebView();

		WebEngine webEngine = webView.getEngine();
		webEngine.setJavaScriptEnabled(true);
		webEngine.load("http://blog.axxg.de");

 

lokale Webseiten

Theoretisch kann man auch Webseiten lokal aufrufen:

// index.html ist im gleichen Verzeichnis wie die Klasse
URL url = getClass().getResource("index.html");
webEngine.load(url.toExternalForm());

Jedoch funktioniert das nur bediengt! Alle relativ referenzierten Ressourcen, wie Bilder, *.js oder *.css Dateien, werden nicht mitgeladen. Der Pfad muss IMMER absolut angegebenen werden:-(

webEngine.loadContent("<img src='" + getClass().getResource("logo.jpg") + "' />");

 

HTML 5 Unterstütztung

JavaFX 2.2 unterstützt eine viel Zahl von HTML5 Elementen:

  • Canvas
  • Media Playback
  • verschiedene Input-Typen: color, file, etc.
  • details-, summary-, meter- und progress-Tags
  • DOM
  • SVG
  • Editable content
  • History maintenance

 

Das Programm

package de.axxg.web;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Start extends Application {

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

	@Override
	public void start(Stage primaryStage) {
		// +++++++++++++++++++++++++++++++++++++++++++++
		// Center
		// +++++++++++++++++++++++++++++++++++++++++++++

		WebView webView = new WebView();

		WebEngine webEngine = webView.getEngine();
		webEngine.setJavaScriptEnabled(true);
		webEngine.load("http://blog.axxg.de");

		// Szene
		Scene scene = new Scene(webView);

		// +++++++++++++++++++++++++++++++++++++++++++++
		// Stage konfigurieren
		// +++++++++++++++++++++++++++++++++++++++++++++

		// miniicon setzen
		primaryStage.getIcons().add(
				new Image(Start.class.getResourceAsStream("logo.jpg")));

		// Titel setzen
		primaryStage.setTitle("AxxG - WebView Beispiel");

		// Stage anzeigen
		primaryStage.setScene(scene);
		primaryStage.show();

	}

}

 

Download

Für Faule gibt es hier ein fertiges Projekt…

Java Version JDK 1.7.0_11 Inhalt gepacktes Projekt
JavaFX Version 2.2.4 Größe 4.018 KB (~4 MB)
IDE Eclipse IDE Version 3.8.1 Endung *.zip
Preis kostenlos Lizenz Creative Commons Lizenzvertrag

[download id=“24″ format=“2″]

 

Die Quellen und weiterführende Links

 

Copyright © 2013 AxxG – Alexander Gräsel




1 Antwort : “JavaFX: Webseiten anzeigen per WebView”

  1. Merry sagt:

    Ich versuche gerade in ein bestehendes Java Projekt eine Webseite einzubinden, genauer gesagt openStreetMap oder GoogleMaps, aber es scheitert schon beim erstellen der WebView, da sich diese nicht importieren lässt. Gibt es da etwas zu beachten oder ein Tipp wie ich das umsetzen kann?

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.