【发布时间】:2012-08-23 21:07:25
【问题描述】:
我正在尝试使用 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 上也尝试过代码,但看起来仍然像 Windows XP 对话框,即使它是本机对话框,怎么会?)
【问题讨论】:
-
@PaulTaylor 您是否尝试使用
UIManager设置L&F 来查看JFileChoosers 在OS X 上的外观?如果您还没有,那可能是另一种选择 -
是的,我使用的是系统外观和感觉,颜色都是 Maclike,但打开的对话框仅提供对用户文件夹、我的主文件夹和硬盘驱动器的访问权限,但不提供任何收藏夹内容
标签: java macos awt jfilechooser