【问题标题】:Can I use java.awt.FileDialog to only allow the user to select folders我可以使用 java.awt.FileDialog 只允许用户选择文件夹吗
【发布时间】: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


【解决方案1】:

关于你的第一个问题,请查看我的 cmets 中的链接

至于第二个,我建议归结为他们链接到哪些库以提供功能。仅仅因为操作系统已更新并不意味着旧库已被删除。为了保持与旧版本应用程序的兼容性,这些库通常会维护一段时间。

你可以看看xFileDialog(通过这个帖子Alternative to JFileChooser

【讨论】:

  • 感谢您解决了文件夹问题,但是我很失望在 OSX 上提供的本机打开对话框与 JFileChooser 没有太大区别,而且远不如 Quaqua 文件选择器好。不幸的是,xFileDialog 没有用,因为主要问题在于 OSX 而不是 Windows 上的应用程序。
  • 我已将您的答案标记为正确,因为您已经回答了我的两个问题,但不幸的是,我还没有解决我的根本问题,即没有类似 OSX 的文件对话框。
  • 哎呀,我搞砸了源代码控制,实际上本机对话框在 OSX 上看起来很棒,不幸的是 apple.awt.fileDialogForDirectories 选项已损坏,但由于在 1.7.0_08 的最终版本中修复,即很快。
  • 我有点好奇这个知道,我没试过,不过你不妨看看@java.dzone.com/news/native-dialogs-swing-little
  • 谢谢,但我对 Native OSX 对话框很满意,只是等待错误修复。任何不是专门为 OSX 开发的东西都不会很好地工作。
猜你喜欢
  • 2016-04-08
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2016-10-07
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多