java - 使用 Java Swing 打开 Finder/Explorer

标签 java macos swing runtime desktop

我正在创建一个应用程序,在该应用程序中,用户实际上能够非常轻松地单击应用程序中的链接,这会在 Finder(在 Mac 中)/Windows 资源管理器中打开一个特定的文件夹。这可能发生在链接或按钮的点击事件上。

有没有一种方法可以通过 Swing 打开这些 native 操作系统应用程序(针对特定文件夹)?

最佳答案

简答:

if (Desktop.isDesktopSupported()) {
    Desktop.getDesktop().open(new File("C:\\"));
}

长答案: 虽然读取它是什么操作系统然后运行特定于操作系统的命令是可行的,但它在一定程度上需要对需要完成的操作进行硬编码。

让 Java 处理每个操作系统打开目录的方式。不应该是我们头疼的事情。 <3 抽象。

阅读#open(File)方法文档显示它将在支持该操作的所有操作系统上打开链接。如果当前平台不支持打开文件夹或文件(比如headless环境?当然打不开是我的猜测),会抛出UnsupportedOperationException。如果用户无权读取文件夹(Windows Vista/7/8,基于 Unix 的计算机),您将收到 SecurityException。所以如果你问我,它处理得相当好。

更新:在获取 Desktop 对象之前添加了一个 if 检查,这样您的代码就不会出现讨厌的 HeadlessExceptionUnsupportedOperationException #getDesktop() Java Documentation 中提到的异常.

关于java - 使用 Java Swing 打开 Finder/Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339922/

相关文章:

java - Javafx中的滚动条不滚动

Java检测字符串中的双双引号

objective-c - IBOutlets 可以在 App Delegate 中使用来访问文档窗口吗?

swift - 背景清晰的 NSProgressIndicator

java - 当对象更改时更新 JTable 中的数据

Java从另一个线程更新jtable行

java - 如何在 eclipse 中包含其他下载的包

java - 如何通过 Windows 命令提示符使用 Java Keytool 指定现有 SSL 证书的文件路径?

macos - OSX 上 PostgreSQL 的最佳数据库查询工具是什么?

java - JLabel 没有出现