我正在嘗試將JavaFX WebView集成到我的應用程序中。JavaFX中的桌面類
問題是我想在默認瀏覽器中打開鏈接,而不是在WebView中打開鏈接。
我搜索了很多,每個人都在談論桌面類,所以我試了一下。
這是我現在相關的代碼:
webView.getEngine().locationProperty()
.addListener(new ChangeListener<String>() {
@Override
public void changed(
ObservableValue<? extends String> observable,
String oldValue, String newValue) {
Platform.runLater(() -> webView.getEngine().loadContent(content.get()));
new Thread() {
@Override
public void run() {
BrowserOpener.open(newValue);
}
}.start();
}
});
然而,似乎工作,但有一個問題。 。webView.getEngine()locationProperty() .addListener(新的ChangeListener(){
@Override
public void changed(
ObservableValue<? extends String> observable,
String oldValue, String newValue) {
Platform.runLater(() -> webView.getEngine()
.loadContent(content.get()));
new Thread() {
@Override
public void run() {
BrowserOpener.open(newValue);
}
}.start();
}
});
BrowserOpener:
public static void open(String uriString) {
openUri(URI.create(uriString));
}
public static void openUri(URI uri) {
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
然而,似乎工作,但有一個問題,如果我運行此應用程序。並點擊一個鏈接,默認瀏覽器打開鏈接,但這裏的問題,也是Windows文件管理器打開
如果我將BrowserOpener.open(newValue)
更改爲BrowserOpener.open("http://google.com")
它工作正常
你們有什麼想法嗎?
謝謝。
你可以記錄'newValue'字符串,併發布一些由Windows文件管理器打開的值的例子嗎? – 2014-09-02 12:01:50
我已經做了調試。 newValue包含與常量完全相同的值。此外,我插入了一個newValue.equals(常量)和它的真實。 – galovics 2014-09-02 13:44:58