12.4Webbrowser
Eine ganz besondere Komponente ist WebView, die mit einer referenzierten WebEngine HTML rendern kann. JavaFX basiert auf der nativen quelloffenen Bibliothek WebKit (http://www.webkit.org/), die von Apple, Google, Nokia, Adobe und weiteren IT-Schwergewichten entwickelt wird bzw. wurde. Mit dieser schönen Komponente lassen sich einfach existierende Webanwendungen einbetten, etwa Karten, Bezahlsysteme, E-Mail-Clients oder Kommunikationssoftware.
Um HTML darzustellen, steht am Anfang der Aufbau eines WebView-Objekts. Von ihm wird die WebEngine erfragt, die weitere Methoden bietet, wie load(…) oder loadContent(…); der Ladeprozess lässt sich dann über stop() abbrechen oder über reload() neu anstoßen.
Verbinden wir das zu einem kleinen Beispiel:
Listing 12.4com/tutego/insel/javafx/WebViewDemo.java
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewDemo extends Application
{
@Override
public void start( Stage stage )
{
WebView htmlViewer1 = new WebView();
htmlViewer1.getEngine().loadContent( "<html>Hallo <b>WebView</b>.</html>" );
WebView htmlViewer2 = new WebView();
htmlViewer2.getEngine().load( "http://javafx.com/" );
SplitPane splitPane = new SplitPane();
ScrollPane scrollPane = new ScrollPane( htmlViewer2 );
scrollPane.setFitToWidth( true );
splitPane.getItems().addAll( htmlViewer1, scrollPane );
splitPane.setDividerPositions( 0.2f );
stage.setScene( new Scene( splitPane ) );
stage.show();
}
public static void main( String[] args )
{
launch( args );
}
}
Abbildung 12.3Screenshot der Anwendung WebViewDemo
Die SplitPane stellt zwei HTML-Dokumente links und rechts dar. Im rechten Bereich steht ein über eine URL geladenes Dokument, links ein statisch generiertes Dokument. Mit load() auf dem WebEngine-Objekt lässt sich jederzeit ein neues HTML-Dokument laden. Interessant ist auch die Methode executeScript(), die die WebEngine anweist, JavaScript auszuführen. Damit lässt sich aus Java heraus auf das laufende JavaScript-Programm Einfluss nehmen und Zustände im DOM ändern. Aktivierte Hyperlinks verfolgt der Browser automatisch.