我怎样才能让一个Java的FileDialog接受目录作为其文件类型在OS X?
-
22-07-2019 - |
题
我想从我的时候应用程序正在在Mac上运行,因此它会使用OS X文件选择使用JFileChooser,以一个FileDialog的切换。到目前为止,我有以下代码:
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,我认为这不是一个问题。
其他提示
我想在我的应用程序正在在Mac上运行使用一个JFileChooser到FileDialog的切换,这样它将使用OSX的文件选择
我建议你尽量留在Swing世界,并从重量级的世界AWT的避而远之。有办法解决的问题与Swing的L&F在Mac上,如果这是你的问题是什么。看看这个帖子前面一个问题,该链接到一个网站,显示如何得到正确的Mac图标在文件选择。
对不起,我不完全回答你的问题。如果有其他原因,你宁愿留在FileDialog
,我会很乐意删除此帖子。
使用最普遍的解决方案,同时后:
System.setProperty("apple.awt.fileDialogForDirectories", "true");
我解决不了本地的FileDialog实现的按钮(仅限英文)翻译。
所以我得到在MacOS工程完美解决方法:
try {
Process process = Runtime.getRuntime().exec(new String[]{//
"/usr/bin/osascript", //
"-e", //
"set selectedFolder to choose folder\n"//
+ "return POSIX path of selectedFolder"
});
int result = process.waitFor();
if (result == 0) {
String selectedFolder = new BufferedReader(new InputStreamReader(process.getInputStream())).readLine();
return new File(selectedFolder);
}
} catch (Exception ex) {
}
return null;
享受!
不隶属于 StackOverflow