我正在尝试使用 FileDialog 而不是 JFileChooser 来在 OSX 上获得更自然的行为,特别重要的是“Collection 夹”列具有指向使用 JFileChooser 隐藏在/Volumes 下的共享文件夹的清晰链接。
我正在使用 Java 7,因此我没有使用 Quaqua JFileChooser,因为它已经一年没有更新了,我不确定它是否与 Oracles Java 7 兼容。
但是我遇到了一个问题,有没有办法让 FileDialog 只允许打开一个文件夹而不是一个文件,我设置了一个文件名过滤器但是它似乎没有效果并且没有
.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
就像 JFileChooser 一样。
public void actionPerformed(ActionEvent e)
{
FileDialog chooser = new FileDialog(SongKong.mainWindow.frame);
chooser.setFilenameFilter(new FolderFilter());
chooser.setMode(FileDialog.LOAD);
chooser.setVisible(true);
String folderSelected = chooser.getDirectory();
File folder = new File(folderSelected) ;
if(folder.exists() && folder.isDirectory())
{
//Do something with selected folder
}
}
class FolderFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
return new File(dir,name).isDirectory();
}
}
(顺便说一句,我也在 WIndows 7 上尝试了代码,但看起来仍然像 Windopws XP 对话框,尽管它本来是一个 native 对话框,怎么会这样呢?)
最佳答案
关于您的第一个问题,请查看我评论中的链接
至于第二个,我建议归结为它们链接到哪些库以促进功能。仅仅因为操作系统已经更新并不意味着旧库已被删除。为了保持与旧版本应用程序的兼容性,这些库通常会维护一段时间。
你可以看看xFileDialog (通过这篇文章 Alternative to JFileChooser )
关于java - 我可以使用 java.awt.FileDialog 只允许用户选择文件夹吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099980/