当前位置: 首页 > 面试题库 >

如何在OS X中使Java FileDialog接受目录作为其FileType?

杭涵映
2023-03-14
问题内容

当我的应用程序在Mac上运行时,我试图从使用JFileChooser切换到FileDialog,以便它将使用OS X文件选择器。到目前为止,我有以下代码

    FileDialog fd = new FileDialog(this);
    fd.setDirectory(_projectsBaseDir.getPath());
    fd.setLocation(50,50);
    fd.setFile(?);
    fd.setVisible(true);
    File selectedFile = new File(fd.getFile());

我要问什么呢?这样我的文件选择器将允许任何目录作为文件选择器的输入(以下方法已经检查以确保该目录是我只希望FileDialog接受任何目录的正确目录类型)。


问题答案:

假设您确定要使用FileDialog而不是可移植的JFileChooser,则需要设置系统属性,以使创建的FileDialogs用于目录。

有问题的财产是apple.awt.fileDialogForDirectories

因此,只需执行以下操作:

System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog fd = new FileDialog(this); 
fd.setDirectory(_projectsBaseDir.getPath()); 
fd.setLocation(50,50);
fd.setVisible(true); 
File selectedFile = new File(fd.getFile());
System.setProperty("apple.awt.fileDialogForDirectories", "false");

应当指出,这不是可移植的,但是,由于您要替换可移植的JFileDialog,因此我认为这不是问题。



 类似资料:
  • 如何检查一个给定的文件是否在另一个文件下?例如,我有< code>new Paths.get("/foo/bar/" 和< code > new paths . get("。/abc/def.jar")。我想检查第二个是否在< code>/foo/bar下。 我可以找出一些基于字符串的比较,比如< code>path.toFile()。getAbsolutePath()。startsWith(pa

  • 我是IntelliJ maven java编程新手,我想通过我的程序为Mac OS生成dmg文件。 我的开发环境是Ubuntu IntelliJ Java Maven。当我搜索时,有一些插件可以从intelliJ生成dmg文件,但实际上对我来说非常复杂。 你能告诉我这个过程的顺序吗?提前谢谢。 此外,以下消息来自我使用appbundle maven插件运行mvn安装时的命令https://gith

  • 问题内容: 我一直在想是否可以在PHP中将函数作为参数传递;我想要类似的东西,当您在JS中编程时: 我想要的是在exampleMethod中的某处执行该功能。这在PHP中可行吗? 问题答案: 如果您使用的是PHP 5.3.0或更高版本,则是可能的。 请参见手册中的匿名函数。 对于您的情况,您将这样定义:

  • 问题内容: 是用于更改工作目录的shell命令。 如何在Python中更改当前的工作目录? 问题答案: 你可以使用以下命令更改工作目录: 使用此方法时,有两个最佳实践: 在无效路径上捕获异常(WindowsError,OSError)。如果抛出异常,请不要执行任何递归操作,尤其是破坏性操作。它们将沿旧路径而不是新路径运行。 完成后,返回到旧目录。可以通过将chdir调用包装在上下文管理器中以异常安

  • 问题内容: 我试图了解如何使用WCF数据服务(基于EF 4.1)创建一个宁静的Web服务,该服务将保留作为JSON对象传递的实体。 我已经能够创建一种方法,该方法可以接受以一组原始数据类型作为参数的GET请求。我不喜欢这种解决方案,我更喜欢在HTTP请求正文中发送带有JSON对象的POST请求。 我发现我无法获得将json序列化为对象的框架,但是我可以手动完成。 我的问题是我似乎无法读取POST请