JFileChooser无法设置默认选择

时间:2015-06-30 20:34:01

标签: java jfilechooser

我想提示用户提供保存某些文件的目录。因此,我根据这个简单的演示应用程序设置了一个JFileChooser:

import javax.swing.JFileChooser;

public class Demo {
   public static void main(String[] args) {
      new Demo();
   }

   public Demo() {
      JFileChooser chooser = new JFileChooser();
      chooser.setDialogTitle("Chooser test");
      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
      chooser.setAcceptAllFileFilterUsed(false);
      chooser.showSaveDialog(null);
   }
}

问题是“选择”按钮是灰色的,直到用户以某种方式与文件选择器交互,即使当前显示的目录(在这种情况下,用户的主目录,尽管我的实际用例是更具体)是一个完全有效的目的地。我已尝试使用JFileChooser.setSelectedFile()设置默认选择,但这仍然不会导致启用“选择”按钮。

我预计在大多数情况下,我的用户会想要使用我为他们选择的默认目录,他们应该只需点击文件选择器即可。如何让“选择”按钮实际启用?

这是在OSX,Java 6/7上,如果它是相关的。任何意见/建议表示赞赏。谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

这看起来像Mac中的JRE problem尝试将JRE / JDK更新为最新版本并尝试

无论如何添加

  chooser.setCurrentDirectory(new File(System.getProperty("user.dir")));

currentDirectory位置设置为CurrentDirectory

答案 1 :(得分:0)

好的,根据Madhan的评论,这似乎是针对OSX的。考虑到这一点,我找到了一个解决方法:调用JFileChooser.updateUI()将强制按钮注意到事情已经发生了变化。这是更新的脚本:

import java.io.File;

import javax.swing.JFileChooser;

public class Demo {
   public static void main(String[] args) {
      new Demo();
   }

   public Demo() {
      JFileChooser chooser = new JFileChooser();
      chooser.setDialogTitle("Chooser test");
      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
      chooser.setAcceptAllFileFilterUsed(false);
      File root = chooser.getCurrentDirectory();
      chooser.setCurrentDirectory(new File(root.getParent()));
      chooser.setSelectedFile(root);
      chooser.updateUI();
      chooser.showSaveDialog(null);
   }
}

遗憾的是,setCurrentDirectorysetSelectedFile的来电似乎是必要的。至少它有效。感谢你的帮助,Madhan;我假设我做错了什么,所以知道这是一个操作系统/外观问题指向我寻找解决方法。