我想提示用户提供保存某些文件的目录。因此,我根据这个简单的演示应用程序设置了一个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上,如果它是相关的。任何意见/建议表示赞赏。谢谢你的时间。
答案 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);
}
}
遗憾的是,setCurrentDirectory
和setSelectedFile
的来电似乎是必要的。至少它有效。感谢你的帮助,Madhan;我假设我做错了什么,所以知道这是一个操作系统/外观问题指向我寻找解决方法。