我想从我的时候应用程序正在在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;
请享用!
文章来源: How can I make a java FileDialog accept directories as its FileType in OS X?