Я пытаюсь интегрировать JavaFX WebView в свое приложение.Рабочий класс в JavaFX
Проблема в том, что я хочу открывать ссылки в браузере по умолчанию, а не в WebView.
Я много гулял, и все говорят о классе Desktop, поэтому я попробовал.
Вот мой соответствующий код Сейчас:
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? –
Я уже отлаживал. NewValue содержит точно такое же значение, как и константа. Также я вставил newValue.equals (constant) и его true. – galovics