下面列出了怎么用javafx.scene.web.WebEngine的API类实例代码及写法,或者点击链接到github查看源代码。
private void setting() {
WebEngine engine = this.webview.getEngine();
JSObject window = (JSObject) engine.executeScript("window");
Object ace = null;
try {
ace = engine.executeScript("ace");
} catch (Exception e) {
}
if (ace != null && ace != engine.executeScript("undefined")) {
if (this.lang != null) {
window.call("start", this.lang);
this.lang = null;
}
if (this.source != null) {
window.call("set", this.source);
this.source = null;
}
if (this.readOnly != null) {
window.call("setReadOnly", this.readOnly);
this.readOnly = null;
}
}
}
@FXML
void initialize() {
WebEngine engine = this.webview.getEngine();
engine.load(PluginServices.getResource("logbook/gui/text_editor_pane.html").toString());
engine.getLoadWorker().stateProperty().addListener(
(ob, o, n) -> {
if (n == Worker.State.SUCCEEDED) {
this.setting();
}
});
KeyCombination copy = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_DOWN);
KeyCombination cut = new KeyCodeCombination(KeyCode.X, KeyCombination.CONTROL_DOWN);
this.webview.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if (copy.match(event) || cut.match(event)) {
String text = String.valueOf(engine.executeScript("getCopyText()"));
Platform.runLater(() -> {
ClipboardContent content = new ClipboardContent();
content.putString(text);
Clipboard.getSystemClipboard().setContent(content);
});
}
});
}
private void initialize() {
URL changelog = release.getApplication().getChangelog();
if (changelog != null) {
WebEngine engine = changeView.getEngine();
String finalURL = String.format("%s?from=%d&to=%d", changelog, currentReleaseID, release.getId());
engine.load(finalURL);
} else {
changeView.setVisible(false);
changeView.setManaged(false);
}
Object[] messageArguments = { release.getApplication().getName(), currentVersion, release.getVersion() };
MessageFormat formatter = new MessageFormat("");
formatter.setLocale(resources.getLocale());
if (release.getLicenseVersion() != currentLicenseVersion) {
formatter.applyPattern(resources.getString("infotext.paidupgrade"));
} else {
formatter.applyPattern(resources.getString("infotext.freeupgrade"));
}
infoLabel.setText(formatter.format(messageArguments));
infoLabel.autosize();
}
@Override
public void start(Stage primaryStage) {
TextArea textArea = new TextArea();
WebView webView = new WebView();
WebEngine engine = webView.getEngine();
EventStreams.valuesOf(textArea.textProperty())
.successionEnds(Duration.ofMillis(500))
.subscribe(html -> engine.loadContent(html));
SplitPane root = new SplitPane();
root.getItems().addAll(textArea, webView);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static Map<String, String> readCookie(WebEngine webEngine) {
try {
String s = (String) webEngine.executeScript("document.cookie;");
String[] vs = s.split(";");
Map<String, String> m = new HashMap<>();
for (String v : vs) {
String[] vv = v.split("=");
if (vv.length < 2) {
continue;
}
m.put(vv[0].trim(), vv[1].trim());
}
return m;
} catch (Exception e) {
logger.debug(e.toString());
return null;
}
}
public void start(Stage primaryStage) {
try {
WebView wv = new WebView();
WebEngine we = wv.getEngine();
String html = "<html><center><h2>Hello, world!</h2></center></html>";
we.loadContent(html, "text/html");
Scene scene = new Scene(wv, 200, 60);
primaryStage.setTitle("My HTML page");
primaryStage.setScene(scene);
primaryStage.onCloseRequestProperty()
.setValue(e -> System.out.println("Bye! See you later!"));
primaryStage.show();
} catch (Exception ex){
ex.printStackTrace();
}
}
public void start9(Stage primaryStage) {
try {
Text txt = new Text("Fill the form and click Submit");
WebView wv = new WebView();
WebEngine we = wv.getEngine();
File f = new File("src/main/resources/form.html");
we.load(f.toURI().toString());
VBox vb = new VBox(txt, wv);
vb.setSpacing(10);
vb.setAlignment(Pos.CENTER);
vb.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(vb, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX with embedded HTML");
primaryStage.onCloseRequestProperty()
.setValue(e -> System.out.println("Bye! See you later!"));
primaryStage.show();
} catch (Exception ex){
ex.printStackTrace();
}
}
private void initComponents() {
webView.setId("webView");
webView.getEngine().getLoadWorker().stateProperty().addListener(new HyperlinkRedirectListener(webView));
VBox.setVgrow(webView, Priority.ALWAYS);
WebEngine engine = webView.getEngine();
if (blurbInfo.getURL() != null)
engine.load(blurbInfo.getURL().toExternalForm());
else
engine.loadContent(blurbInfo.getHtml());
buttonBar.setId("buttonBar");
buttonBar.setButtonMinWidth(Region.USE_PREF_SIZE);
buttonBar.getButtons().add(okButton);
if (blurbInfo.isCancelNeeded()) {
buttonBar.getButtons().add(cancelButton);
}
okButton.setOnAction((e) -> onOk());
cancelButton.setOnAction((e) -> onCancel());
}
public static void init(Node source) {
WebView webview = (WebView) source;
if (webview.getProperties().get("marathon_player_installed") == null) {
webview.getProperties().put("marathon_player_installed", Boolean.TRUE);
WebEngine webEngine = webview.getEngine();
if (webEngine.getLoadWorker().stateProperty().get() == State.SUCCEEDED) {
loadScript(webview, webEngine);
}
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
if (newState == State.SUCCEEDED) {
loadScript(webview, webEngine);
}
}
});
}
}
private void init(Node source) {
WebView webview = (WebView) source;
if (webview.getProperties().get("marathon_listener_installed") == null) {
webview.getProperties().put("marathon_listener_installed", Boolean.TRUE);
WebEngine webEngine = webview.getEngine();
if (webEngine.getLoadWorker().stateProperty().get() == State.SUCCEEDED) {
loadScript(webview);
}
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> ov, State oldState, State newState) {
if (newState == State.SUCCEEDED) {
loadScript(webview);
}
}
});
}
JavaFXWebViewElement.init(source);
}
/**
* @Title: addWebView
* @Description: 添加WebView视图
*/
public void addWebView(String title, String url, String iconPath) {
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
if (url.startsWith("http")) {
webEngine.load(url);
} else {
webEngine.load(IndexController.class.getResource(url).toExternalForm());
}
if (indexController.getSingleWindowBootCheckBox().isSelected()) {
JavaFxViewUtil.getNewStage(title, iconPath, new BorderPane(browser));
return;
}
Tab tab = new Tab(title);
if (StringUtils.isNotEmpty(iconPath)) {
ImageView imageView = new ImageView(new Image(iconPath));
imageView.setFitHeight(18);
imageView.setFitWidth(18);
tab.setGraphic(imageView);
}
tab.setContent(browser);
indexController.getTabPaneMain().getTabs().add(tab);
indexController.getTabPaneMain().getSelectionModel().select(tab);
}
private SplitPane createChartPane() {
CategoryDataset3D dataset = SampleData.createCompanyRevenueDataset();
Chart3D chart = AreaChart3DFXDemo1.createChart(dataset);
Chart3DViewer viewer = new Chart3DViewer(chart);
this.splitter = new SplitPane();
splitter.setOrientation(Orientation.VERTICAL);
final BorderPane borderPane = new BorderPane();
borderPane.setCenter(viewer);
// Bind canvas size to stack pane size.
viewer.prefWidthProperty().bind(borderPane.widthProperty());
viewer.prefHeightProperty().bind(borderPane.heightProperty());
final StackPane sp2 = new StackPane();
this.chartDescription = new WebView();
WebEngine webEngine = chartDescription.getEngine();
webEngine.load(AreaChart3DFXDemo1.class.getResource("AreaChart3DFXDemo1.html").toString());
sp2.getChildren().add(chartDescription);
splitter.getItems().addAll(borderPane, sp2);
splitter.setDividerPositions(0.70f, 0.30f);
return splitter;
}
@FXML
private void handleValidateButtonAction(ActionEvent event) {
String s = StringEscapeUtils.unescapeHtml4(markdownToHtml(currentSourceText.getText()));
if (MdConvertController.corrector == null) {
MdConvertController.corrector = new Corrector();
}
try {
String result = MdConvertController.corrector.checkHtmlContent(s);
WebEngine webEngine = currentRenderView.getEngine();
webEngine.loadContent("<!doctype html><html lang='fr'><head><meta charset='utf-8'><base href='"
+ MainApp.class.getResource("assets").toExternalForm() + "' /></head><body>" + result + "</body></html>");
webEngine.setUserStyleSheetLocation(MainApp.class.getResource("assets/static/css/content.css").toExternalForm());
} catch (DOMException e) {
log.error(e.getMessage(), e);
}
}
public void loadPage(TextField textField, //ProgressBar progressBar,
WebEngine webEngine, WebView webView) {
String route = textField.getText();
if (route !=null)
if (!route.substring(0, 7).equals("http://")) {
route = "http://" + route;
textField.setText(route);
}
System.out.println("Loading route: " + route);
//progressBar.progressProperty().bind(webEngine.getLoadWorker().progressProperty());
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
@Override
public void changed(ObservableValue<? extends State> value,
State oldState, State newState) {
if(newState == State.SUCCEEDED){
System.out.println("Location loaded + " + webEngine.getLocation());
}
}
});
webEngine.load(route);
}
private static Object executejQuery(final WebEngine engine, String minVersion, String jQueryLocation, String script) {
return engine.executeScript(
"(function(window, document, version, callback) { "
+ "var j, d;"
+ "var loaded = false;"
+ "if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) {"
+ " var script = document.createElement(\"script\");"
+ " script.type = \"text/javascript\";"
+ " script.src = \"" + jQueryLocation + "\";"
+ " script.onload = script.onreadystatechange = function() {"
+ " if (!loaded && (!(d = this.readyState) || d == \"loaded\" || d == \"complete\")) {"
+ " callback((j = window.jQuery).noConflict(1), loaded = true);"
+ " j(script).remove();"
+ " }"
+ " };"
+ " document.documentElement.childNodes[0].appendChild(script) "
+ "} "
+ "})(window, document, \"" + minVersion + "\", function($, jquery_loaded) {" + script + "});");
}
/**
* search all pages for the given text and fill in the results in the searchList
* @param text the String to search for
*/
public void performSearchFor(String text) {
WebEngine webEngine = webView.getEngine();
searchController.initializeSearch(webEngine.getDocument(),text);
Map<String, Integer> occurrenceMap =
searchController.getSortedNameOccurrenceMap();
fillInSearchList(occurrenceMap);
}
private void init(final String url) {
Platform.setImplicitExit(false);
Platform.runLater(() -> {
Scene scene1 = new Scene(root);
setScene(scene1);
WebView webView = new WebView();
webView.setMaxWidth(Double.MAX_VALUE);
webView.setMaxHeight(Double.MAX_VALUE);
// System.out.println("WEB VIEWER: " + System.identityHashCode(webView.getClass()));
root.setCenter(webView);
webView.setContextMenuEnabled(false);
final WebEngine webEngine = webView.getEngine();
webEngine.load(url);
webEngine.locationProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(final ObservableValue<? extends String> observable, final String oldValue, final String newValue) {
webEngine.load(newValue);
}
});
EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent event) {
webEngine.load(url.startsWith("http://")
? url
: "http://" + url);
}
};
});
}
private void initWeb(WebEngine webEngine) {
JSObject window = (JSObject) webEngine.executeScript("window");
// JSObject window = (JSObject) webEngine.executeScript("document");
if(isLoad&&null!=member){
window.setMember("oim", member);
}
}
private void initWeb(WebEngine webEngine) {
JSObject window = (JSObject) webEngine.executeScript("window");
// JSObject window = (JSObject) webEngine.executeScript("document");
if (isLoad && null != member) {
window.setMember("oim", member);
}
}
@Override
public void start(final Stage primaryStage) {
primaryStage.setTitle("What World");
WebView webView = new WebView();
WebPage webPage = null;
WebEngine webEngine = webView.getEngine();
webEngine.getLoadWorker().stateProperty().addListener((ObservableValue<? extends State> ov, State oldState, State newState) -> {
System.out.println("loadWorker");
if (newState == State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("app", app);
System.out.println("app");
}
});
webPage = Accessor.getPageFor(webEngine);
webPage.setJavaScriptEnabled(true);
webPage.setEditable(false);
webPage.setContextMenuEnabled(false);
webView.setFocusTraversable(true);
webView.getEngine().load(WebViewStyleTest.class.getResource("WebViewStyleTest.html").toExternalForm());
BorderPane bp=new BorderPane();
Scene scene = new Scene(bp);
scene.getStylesheets().add(this.getClass().getResource("WebView.css").toString());
bp.setCenter(webView);
primaryStage.setScene(scene);
primaryStage.show();
}
protected WebEngine getWebEngine(Context context) {
WebViewPanel webViewPanel = getWebViewPanel(context);
if(webViewPanel != null) {
return webViewPanel.getWebEngine();
}
return null;
}
private void initEvent() {
final WebEngine webEngine = webView.getEngine();
webEngine.locationProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
locationField.setText(newValue);
}
});
webEngine.locationProperty().addListener(e -> {
System.out.println(webEngine.getLocation());
});
EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
webEngine.load(locationField.getText().startsWith("http://") ? locationField.getText() : "http://" + locationField.getText());
}
};
locationField.setOnAction(goAction);
goButton.setOnAction(goAction);
//webEngine.load("http://www.baidu.com");
webView.getEngine().load(WebViewStyle.class.getResource("ScriptToJava.html").toExternalForm());
}
private void init() {
VBox rootVBox = new VBox();
this.setCenter(rootVBox);
// this.setBackground("Resources/Images/Wallpaper/1.jpg");
this.setTitle("登录");
this.setWidth(380);
this.setHeight(600);
this.setRadius(10);
StackPane u = new StackPane();
u.setPrefSize(50, 100);
// String hString = this.getClass().getResource("/resources/chat/index.html").toString();
File file = new File("Resources/Images/Head/User/90_100.gif");
String fullPath = file.getAbsolutePath();
String htmlText = "<html><body> <lable>666</label>"
+ "<img src=\"file:/"+fullPath+"\" />"
+ "</body></html> ";
System.out.println(htmlText);
WebView webView = new WebView();
webView.setContextMenuEnabled(false);
WebEngine we = webView.getEngine();
//we.load(hString);
Image logoIamge = new Image(this.getClass().getResource("/resources/login/logo.png").toExternalForm(), true);
ImageView logoImageView = new ImageView();
logoImageView.setImage(logoIamge);
we.loadContent(htmlText);
// Document d = we.getDocument();
// Element root = we.getDocument().getDocumentElement();
// NodeList nl = root.getElementsByTagName("body");
// Node node = nl.item(0);
//node.appendChild(node);
rootVBox.getChildren().add(u);
rootVBox.getChildren().add(webView);
}
public void open(String url){
//final WebEngine webEngine = pob.getEngine();
WebEngine engine = pob.getEngine();
engine.load(url);
/*
Hyperlink hpl = new Hyperlink(url);
hpl.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
webEngine.load(url);
}
});*/
}
private Node createHelpIcon() {
WebView htmlContent = new WebView();
WebEngine webEngine = htmlContent.getEngine();
String htmlText;
try {
htmlText = new BufferedReader( new InputStreamReader(
getClass().getResourceAsStream( "/html/highlight-options-help.html" ),
StandardCharsets.UTF_8 )
).lines().collect( joining( "\n" ) );
webEngine.setUserStyleSheetLocation( getClass().getResource( "/css/web-view.css" ).toString() );
} catch ( Exception e ) {
log.warn( "Error loading HTML resources", e );
htmlText = "<div>Could not open the help file</div>";
}
Label help = AwesomeIcons.createIconLabel( HELP );
Dialog helpDialog = new Dialog( htmlContent );
helpDialog.setTitle( "Highlight Options Help" );
helpDialog.setStyle( StageStyle.UTILITY );
helpDialog.setResizable( false );
final String html = htmlText;
help.setOnMouseClicked( event -> {
helpDialog.setOwner( getScene().getWindow() );
webEngine.loadContent( html );
helpDialog.show();
} );
help.setOnMouseEntered( event -> getScene().setCursor( Cursor.HAND ) );
help.setOnMouseExited( event -> getScene().setCursor( Cursor.DEFAULT ) );
return help;
}
/**
* 打开网址
*
* @param url
*/
private void openUrl(String url) {
com.sun.javafx.webkit.WebConsoleListener.setDefaultListener((webView, message, lineNumber, sourceId) -> {
logger.info("from webview: " + message + " [" + sourceId + " - " + lineNumber + "]");
});
Platform.runLater(new Runnable() {
@Override
public void run() {
webview = new WebView();
// webview.setContextMenuEnabled(false);
WebEngine webEngine = webview.getEngine();
webEngine.setJavaScriptEnabled(true);
webEngine.setOnAlert(event -> jsAlert(event.getData()));
webEngine.setConfirmHandler(message -> jsConfirm(message));
webEngine.setOnError(event -> {
logger.info(event.getMessage());
});
// webEngine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
//
// });
webviewScene = new Scene(webview);
bsPanel.setScene(webviewScene);
initData();
webEngine.load(url);
webview.getEngine().executeScript("window.serverPort="+AppConfig.serverPort+"");
}
});
}
protected WebEngine initWebEngine() {
if (tabControllers == null || tabControllers.isEmpty()) {
return null;
}
for (Tab tab : tabControllers.keySet()) {
WebBrowserBoxController c = tabControllers.get(tab);
return c.webEngine;
}
return null;
}
public static void addMarkerInGaoDeMap(WebEngine webEngine,
double longitude, double latitude, String label, String info,
String image, boolean multiple, int mapSize, int markSize, int textSize) {
String jsLabel = (label == null || label.trim().isBlank()
? "null" : "'" + label.replaceAll("'", CommonValues.MyBoxSeparator) + "'");
String jsInfo = (info == null || info.trim().isBlank()
? "null" : "'" + info.replaceAll("'", CommonValues.MyBoxSeparator) + "'");
String jsImage = (image == null || image.trim().isBlank()
? "null" : "'" + StringTools.replaceAll(image, "\\", "/") + "'");
webEngine.executeScript("addMarker("
+ longitude + "," + latitude
+ ", " + jsLabel + ", " + jsInfo + ", " + jsImage
+ ", " + multiple + ", " + mapSize + ", " + markSize + ", " + textSize + ");");
}
public void start10(Stage primaryStage) {
Text txt = new Text("Enjoy searching the Web!");
WebView wv = new WebView();
WebEngine we = wv.getEngine();
we.load("http://www.google.com");
//wv.setZoom(1.5);
/*
WebHistory history = we.getHistory();
ObservableList<WebHistory.Entry> entries = history.getEntries();
for(WebHistory.Entry entry: entries){
String url = entry.getUrl();
String title = entry.getTitle();
Date date = entry.getLastVisitedDate();
}
*/
VBox vb = new VBox(txt, wv);
vb.setSpacing(20);
vb.setAlignment(Pos.CENTER);
vb.setStyle("-fx-font-size: 20px;-fx-background-color: lightblue;");
vb.setPadding(new Insets(10, 10, 10, 10));
Scene scene = new Scene(vb,750,500);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX with the window to another server");
primaryStage.onCloseRequestProperty()
.setValue(e -> System.out.println("Bye! See you later!"));
primaryStage.show();
}
public static void register(WebEngine webEngine) {
try {
Class jsObjectClass = Class.forName("netscape.javascript.JSObject");
Method setMemberMethod = jsObjectClass.getDeclaredMethod("setMember", String.class,Object.class);
JSObject window = (JSObject) webEngine.executeScript("window");
setMemberMethod.invoke(window, "davmail", new O365InteractiveJSLogger());
webEngine.executeScript("console.log = function(message) { davmail.log(message); }");
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
LOGGER.info("netscape.javascript.JSObject not available");
}
}