我正在尝试从javafx在默认系统浏览器中打开一个Web URL.我没有找到任何关于此的官方文件.任何线索?
编辑:我找到了一个教程,但它不起作用.我正在使用MacOsX,我尝试启动
java.awt.Desktop.getDesktop().browse(new URI(url));
Run Code Online (Sandbox Code Playgroud)
但是我得到了 HeadlessExcelption
jew*_*sea 42
使用hostServices.showDocument(location).
尝试将以下代码放在应用程序的start方法中:
getHostServices().showDocument("http://www.yahoo.com");
Run Code Online (Sandbox Code Playgroud)
cek*_*ock 15
补充jewelsea的答案,如果您不知道如何调用getHostServices(),那么请在您的主类上尝试:
HostServicesDelegate hostServices = HostServicesFactory.getInstance(this);
hostServices.showDocument(WEBSITE);
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用ProcessBuilder
:
public static void openWebpage(String url) {
try {
new ProcessBuilder("x-www-browser", url).start();
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
如果Desktop.getDesktop().browse(uri)
由于某种原因挂起而没有任何错误,您可以使用此选项.
尝试这个:
try {
Desktop.getDesktop().browse(new URL("https://google.com").toURI());
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
似乎无法完成,因为此功能未实现: https: //javafx-jira.kenai.com/browse/RT-210
问题是您将无法启动任何需要 awt-stack 和 jfx 在同一虚拟机中的东西。我们的决定是使用单独的 JVM。只需启动一个单独的虚拟机,并接受通过套接字浏览的命令。
这是一种方式,另一种方式 - 是找到从 java 调用浏览器的任何其他方式 - 这是一项不特定于 javafx-2 的任务,而是特定于 java 的任务。
但开发者添加了评论:
Anthony Petrov 添加了评论 - 2013 年 5 月 17 日 05:09 请注意,FX8 允许 headful AWT 与 FX 在同一虚拟机中运行。所以 AWT API 应该可以工作。
归档时间: |
|
查看次数: |
24409 次 |
最近记录: |