我正在尝试使用FileDialog而不是JFileChooser来在OSX上获得更自然的行为,尤其重要的是收藏夹列,其中包含使用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对话框,即使它是一个本地对话框,为什么会这样?)
答案 0 :(得分:1)
关于您的第一个问题,请查看我的评论中的链接
至于第二种,我建议归结为它们链接到哪些库以便设置功能。仅仅因为操作系统已更新并不意味着旧库已被删除。为了保持与旧版本应用程序的兼容性,这些库通常会维护一段时间。
您可以查看xFileDialog(通过此帖子Alternative to JFileChooser)