类javafx.scene.web.WebEvent源码实例Demo

下面列出了怎么用javafx.scene.web.WebEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: PokeMate   文件: PokeMateUI.java
@Override
public void start(final Stage stage) throws Exception {
    stage.setTitle("Pokemate UI");
    stage.setOnCloseRequest(t -> {
        Platform.exit();
        System.exit(0);
    });
    //This needs to be set to the resources directory, however, it is not play along nicely.
    mapComponent = new GoogleMapView("/map.html");
    mapComponent.addMapInializedListener(this);
    mapComponent.getWebview().getEngine().setOnAlert((WebEvent<String> event) -> {
    });
    BorderPane bp = new BorderPane();
    bp.setCenter(mapComponent);
    Scene scene = new Scene(bp);
    stage.setScene(scene);
    stage.setWidth(1100);
    stage.setHeight(674);
    ClassLoader classloader = Thread.currentThread().getContextClassLoader();
    stage.getIcons().add(new Image(classloader.getResourceAsStream("icon.png")));
    stage.show();
}
 
源代码2 项目: mars-sim   文件: DatePicker.java
private void initPicker(WebView webView) {
  // attach a handler for an alert function call which will set the DatePicker's date property.
  webView.getEngine().setOnAlert(new EventHandler<WebEvent<String>>() {
    @Override public void handle(WebEvent<String> event) {
      try { date.set(jQueryUiDateFormat.parse(event.getData())); } catch (ParseException e) { /* no action required */ }
    }
  });

  // place the webView holding the jQuery date picker inside this node.
  this.getChildren().add(webView);

  // monitor the date for changes and update the formatted date string to keep it in sync.
  date.addListener(new ChangeListener<Date>() {
    @Override public void changed(ObservableValue<? extends Date> observableValue, Date oldDate, Date newDate) {
      dateString.set(dateFormat.format(newDate));
    }
  });

  // workaround as I don't know how to size the stack to the size of the enclosed WebPane's html content.
  this.setMaxSize(330, 280);//307, 241);
}
 
源代码3 项目: GMapsFX   文件: MainApp2.java
@Override
public void start(final Stage stage) throws Exception {
    mapComponent = new GoogleMapView();
    mapComponent.addMapInitializedListener(this);
    mapComponent.setDisableDoubleClick(true);
    mapComponent.getWebview().getEngine().setOnAlert((WebEvent<String> event) -> {
     //   System.out.println("Event event: " + event);
    });
            
    BorderPane bp = new BorderPane();
    
    bp.setCenter(mapComponent);

    Scene scene = new Scene(bp);
    stage.setScene(scene);
    stage.show();
    
}
 
源代码4 项目: javafxwebview   文件: WebViewDemo.java
private void createWebView(Stage primaryStage, String page) {
	
	// create the JavaFX webview
	final WebView webView = new WebView();

	// connect the FruitsService instance as "fruitsService" 
	// javascript variable
	connectBackendObject(
			webView.getEngine(),
			"fruitsService", new FruitsService());
	
	// connect the CalculatorService instance as "calculatorService" 
	// javascript variable		
	connectBackendObject(
			webView.getEngine(),
			"calculatorService", new CalculatorService());
	
	// show "alert" Javascript messages in stdout (useful to debug)	
	webView.getEngine().setOnAlert(new EventHandler<WebEvent<String>>(){
		@Override
		public void handle(WebEvent<String> arg0) {
			System.err.println("alertwb1: " + arg0.getData());
		}
	});
	
	// load index.html
	webView.getEngine().load(
			getClass().getResource(page).
			toExternalForm());

	primaryStage.setScene(new Scene(webView));
	primaryStage.setTitle("WebView with Java backend");		
	primaryStage.show();
}
 
源代码5 项目: javafxwebview   文件: Java2JavascriptUtils.java
private AlertEventHandlerWrapper(
		WebEngine engine, 
		EventHandler<WebEvent<String>> wrappedHandler) {
	
	this.engine = engine;
	this.wrappedHandler = wrappedHandler;
}
 
源代码6 项目: javafxwebview   文件: Java2JavascriptUtils.java
@Override
public void handle(WebEvent<String> arg0) {
	if (arg0.getData().contains(CONNECT_BACKEND_MAGIC_WORD)) {
		String varname = arg0.getData().substring(
				CONNECT_BACKEND_MAGIC_WORD.length());
		
		connectToWebEngine(engine, varname);
	}
	else if (wrappedHandler != null) wrappedHandler.handle(arg0);
}
 
源代码7 项目: FxDock   文件: DemoBrowser.java
protected void handleStatusChange(WebEvent<String> ev)
{
	statusField.setText(ev.getData());
}
 
源代码8 项目: GMapsFX   文件: JavaFxWebEngine.java
public void setOnAlert(EventHandler<WebEvent<String>> eventHandler) {
    webEngine.setOnAlert(eventHandler);
}
 
源代码9 项目: javafxwebview   文件: Java2JavascriptUtils.java
/**
 * Registers a backend Java object as a Javascript variable.
 * The real connection to the webEngine comes when the javascript performs
 * an special "alert" message by invoking 
 * "alert('__CONNECT__BACKEND__varname')" where varname is the javascript
 * variable we want to make available.
 * 
 * The call to this function has to be performed before the engine loads the
 * first page (where the alert call should take place).
 * 
 * @param webEngine The webEngine to register the new variable.
 * @param varname The name of the variable in javascript.
 * @param backend The Java backend object.
 */
public static void connectBackendObject(
		final WebEngine webEngine,
		final String varname, 
		final Object backend) {
	
	registerBackendObject(webEngine, varname, backend);
	
	// create a onAlertChangeListener. We always want to listen
	// to onAlert events, since via this event, the javascript front-end
	// will send us an special "alert" message asking to connect the 
	// backend object as soon as possible(*). 
	// However, if the programmer also wants to set
	// his own onAlert handler for this web engine, 
	// we will create a handlerwrapper with our
	// behavior plus the programmer's one.
	
	// (*) It was impossible for me to re-connect the backend object
	// when the users navigates from one page to another page where the
	// backend object was also needed. The navigation erases any javascript
	// variables, so the backend has to be reconnected. However,
	// The recommended state change listeners on
	// webEngine were executed too late, after javascript code asking for the
	// backend object is executed, so it was not a solution.
	// The only way I found is to place a custom javacript "signaling" 
	// code to ask Java to reconnect the backend object.
	// The solution was "alert", because we can listen to alert calls from
	// javascript, so via an special "alert" message, we can connect the
	// backend object again.
	// It is not a bad solution, because the programmer has only to inlude
	// a simple additional script (such as "mybackend.js") in the page 
	// before any other scripts uses the backend variable.
	if (!webEnginesWithAlertChangeListener.contains(webEngine)) {
		if (webEngine.getOnAlert() == null) {
			webEngine.setOnAlert(new AlertEventHandlerWrapper(webEngine,
					null));
		}
		
		webEngine.onAlertProperty().addListener(
			new ChangeListener<EventHandler<WebEvent<String>>>() {

				@Override
				public void changed(
						ObservableValue
						<? extends EventHandler<WebEvent<String>>> arg0,
						EventHandler<WebEvent<String>> previous,
						final EventHandler<WebEvent<String>> newHandler) {

					if (!changing) { // avoid recursive calls
						changing = true;
						webEngine.setOnAlert(
							new AlertEventHandlerWrapper(
									webEngine, 
									newHandler));
						changing = false;
					}
				}
		});
	}
	webEnginesWithAlertChangeListener.add(webEngine);
}
 
 类所在包
 同包方法