java - How retrieve a String from Webengine back to invoking class after page loading -


i'm java , javafx newbie. don't know how pass variable matched (browser) class implements webengine application (myscene) class. both classes listed below. understand (am right?) should done after variable updated, after page loaded. guess there 2 ways it: forcing myscene class wait seconds, retrieve method (like public string getmatched() in browser (not listed) class or notifying myscene class variable updated. don't know, how it. has suggestion?

myscene.java:

package mypackage; import javafx.application.application; import javafx.scene.scene; import javafx.stage.stage; import javafx.concurrent.task;  public class myscene extends application {     private scene scene;      private static string address = "https://www.google.com";      @override public void start(stage stage) {         // create scene         stage.settitle("web view");         browser mybrowser = new browser(address);          scene = new scene(mybrowser,750,500);         stage.setresizable(false);         stage.setscene(scene);         stage.show();     }      public static void main(string[] args){         launch();     } } 

browser.java:

package mypackage;  import java.util.regex.matcher; import java.util.regex.pattern; import javafx.application.platform; import javafx.beans.value.changelistener; import javafx.beans.value.observablevalue; import javafx.concurrent.worker.state; import javafx.geometry.hpos; import javafx.geometry.vpos; import javafx.scene.node; import javafx.scene.layout.hbox; import javafx.scene.layout.priority; import javafx.scene.layout.region; import javafx.scene.web.webengine; import javafx.scene.web.webview;  import org.w3c.dom.element; import org.w3c.dom.nodelist;  class browser extends region {   private string matched;     final webview browser = new webview();     final webengine webengine = browser.getengine();      public browser(string loadaddress) {        string myaddress = loadaddress;         //apply styles         getstyleclass().add("browser");         // load web page         webengine.load(myaddress);          //add web view scene         getchildren().add(browser);         webengine.getloadworker().stateproperty().addlistener(             new changelistener<state>() {                     public void changed(observablevalue ov, state oldstate, state newstate) {                         if (newstate == state.succeeded) {                            pattern fbpattern = pattern.compile(" <title id=\"([...]+)\">");                           nodelist lst = webengine.getdocument().getelementsbytagname("script");                             if (lst != null && lst.getlength() > 0) {                                   (int = 0; < lst.getlength(); i++) {                                       if (lst.item(i).getnodetype() == org.w3c.dom.node.element_node) {                                           element el = (element) lst.item(i);                                          matcher fbmatcher = fbpattern.matcher(el.gettextcontent());                                           if (fbmatcher.find()) {                                             matched = fbmatcher.group(1);                                           }                                       }                                   }                               }                         }                     }                 });     }       private node createspacer() {         region spacer = new region();         hbox.sethgrow(spacer, priority.always);         return spacer;     }      @override protected void layoutchildren() {         double w = getwidth();         double h = getheight();         layoutinarea(browser,0,0,w,h,0, hpos.center, vpos.center);     }      @override protected double computeprefwidth(double height) {         return 750;     }       @override protected double computeprefheight(double width) {         return 500;     } } 


Comments

Popular posts from this blog

java - activate/deactivate sonar maven plugin by profile? -

python - TypeError: can only concatenate tuple (not "float") to tuple -

java - What is the difference between String. and String.this. ? -