繁体   English   中英

JFileChooser无法设置默认选择

[英]JFileChooser can't set default selection

我想提示用户输入要在其中保存一些文件的目录。 因此,按照这个简单的演示应用程序,我设置了一个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上。 任何建议/建议表示赞赏。 感谢您的时间。

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

无论如何添加

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

这会将currentDirectory位置设置为CurrentDirectory

好的,根据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; 我以为我做错了什么,所以知道这是一个操作系统/外观问题,使我朝着寻找解决方法的方向迈进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM