2016-06-11 37 views
1

我有这个VBox拿着一个WebView容器。我无法弄清楚的是如何使WebViewer在任何浏览器的新选项卡或窗口中打开链接,而不是在程序中查看它。如何在网站的浏览器中打开链接在Web查看器内部JavaFx

@FXML private VBox WebViewer; 

public void initialize(URL location, ResourceBundle resources) { 
    WebView browser = new WebView(); 
    WebEngine webEngine = browser.getEngine(); 
    webEngine.load("http://google.com/"); 

    WebViewer.getChildren().addAll(browser); 
} 

回答

1

我假设你现在想通了这一点,但我会做的方式,包括使用在WebEngine特殊的JavaScript API来调用Java方法,并打开它的方式。

创建一个类,像这样的:

public class eagler { 
    public void open(String url) { 
     java.awt.Desktop.getDesktop().browse(url); 
    } 
} 

然后,你webengine.load方法之前补充一点:

webEngine.getLoadWorker().stateProperty().addListener(
      new ChangeListener<State>() { 
       @Override 
       public void changed(ObservableValue<? extends State> ov, 
        State oldState, State newState) { 
        if (newState == State.SUCCEEDED) { 
          JSObject win = (JSObject) webEngine.executeScript("window"); 
          win.setMember("eagler", new eagler()); 
         } 
        } 
       } 
     ); 

现在,每当要打开外部网页...

<button onclick="eagler.open('http://bitly.com/98K8eH')">Click Me</button>