Java JFileChooser:在取消之前保存用户导航到的最后一个目录

Java JFileChooser:在取消之前保存用户导航到的最后一个目录,java,swing,file-io,jfilechooser,Java,Swing,File Io,Jfilechooser,我使用JFileChooser打开一个对话框,让用户打开一个文件。如果用户实际选择了一个文件,我已经设置了当前目录: int returnVal = fc.showOpenDialog(frame); if (returnVal == JFileChooser.APPROVE_OPTION) { File newfile = fc.getSelectedFile(); //set the default directory to this file's directory

我使用JFileChooser打开一个对话框,让用户打开一个文件。如果用户实际选择了一个文件,我已经设置了当前目录:

int returnVal = fc.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
    File newfile = fc.getSelectedFile();

    //set the default directory to this file's directory
    fc.setCurrentDirectory(newfile.getParentFile());
}
else {
    //User cancels file chooser. How to still set the current directory
    //to the one they were last in?
}

但是,即使用户取消对话框(例如,他们决定在选择文件之前在程序中执行其他操作),我也希望保存他们所在的最后一个目录,以避免再次查找该目录的麻烦。这可能吗?

这是因为JFileChooser的一个实例“记住”了它的最后一个位置。您可以在每次希望显示对话框时创建一个新实例,但这样做效率低且耗时


相反,将最后一个“好”位置保存在某种实例变量中。在显示“保存”对话框之前,请设置其当前目录,传递最后一个已知的“良好”位置

这是因为JFileChooser的实例“记住”了它的最后一个位置。您可以在每次希望显示对话框时创建一个新实例,但这样做效率低且耗时


相反,将最后一个“好”位置保存在某种实例变量中。在显示“保存”对话框之前,请设置其当前目录,传递最后一个已知的“良好”位置

这是因为JFileChooser的实例“记住”了它的最后一个位置。您可以在每次希望显示对话框时创建一个新实例,但这样做效率低且耗时


相反,将最后一个“好”位置保存在某种实例变量中。在显示“保存”对话框之前,请设置其当前目录,传递最后一个已知的“良好”位置

这是因为JFileChooser的实例“记住”了它的最后一个位置。您可以在每次希望显示对话框时创建一个新实例,但这样做效率低且耗时



相反,将最后一个“好”位置保存在某种实例变量中。在显示“保存”对话框之前,设置其当前目录,传递最后一个已知的“良好”位置

使用相同的文件选择器实例和大小,文件筛选器和目录应始终保持不变。您还可以创建另一个扩展
JFileChooser
的类,并覆盖用户取消时运行的方法。我在整个过程中使用相同的文件选择器实例。如果用户实际选择了该文件,那么在我随后打开对话框时,它将位于正确的目录中。但是我想知道,如果用户第一次打开对话框时,文件选择器捕获了用户取消之前它所在的最后一个目录,那么是否使用相同的文件选择器实例和大小,文件筛选器和目录应始终保持不变。您还可以创建另一个扩展
JFileChooser
的类,并覆盖用户取消时运行的方法。我在整个过程中使用相同的文件选择器实例。如果用户实际选择了该文件,那么在我随后打开对话框时,它将位于正确的目录中。但是我想知道,如果用户第一次打开对话框时,文件选择器捕获了用户取消之前它所在的最后一个目录,那么是否使用相同的文件选择器实例和大小,文件筛选器和目录应始终保持不变。您还可以创建另一个扩展
JFileChooser
的类,并覆盖用户取消时运行的方法。我在整个过程中使用相同的文件选择器实例。如果用户实际选择了该文件,那么在我随后打开对话框时,它将位于正确的目录中。但是我想知道,如果用户第一次打开对话框时,文件选择器捕获了用户取消之前它所在的最后一个目录,那么是否使用相同的文件选择器实例和大小,文件筛选器和目录应始终保持不变。您还可以创建另一个扩展
JFileChooser
的类,并覆盖用户取消时运行的方法。我在整个过程中使用相同的文件选择器实例。如果用户实际选择了该文件,那么在我随后打开对话框时,它将位于正确的目录中。但是我想知道,如果文件选择器捕获了用户取消对话框之前它所在的最后一个目录,那么用户第一次打开对话框时是否会这样做。如果用户取消对话框,您具体如何获取JFileChooser的最后一个位置?您刚刚做了。您可以使用getCurrentDirectory或十个选定文件的父引用哦,我明白了,我没有意识到getCurrentDirectory会知道它的最后位置,即使对话框被取消。现在可以了。谢谢如果用户取消对话框,您具体如何获得JFileChooser的最后一个位置?您刚刚做到了。您可以使用getCurrentDirectory或十个选定文件的父引用哦,我明白了,我没有意识到getCurrentDirectory会知道它的最后位置,即使对话框被取消。现在可以了。谢谢如果用户取消对话框,您具体如何获得JFileChooser的最后一个位置?您刚刚做到了。您可以使用getCurrentDirectory或十个选定文件的父引用哦,我明白了,我没有意识到getCurrentDirectory会知道它的最后位置,即使对话框被取消。现在可以了。谢谢如果用户取消对话框,您具体如何获得JFileChooser的最后一个位置?您刚刚做到了。您可以使用getCurrentDirectory或十个选定文件的父引用哦,我明白了,我没有意识到getCurrentDirectory会知道它的最后位置,即使对话框被取消。现在可以了。谢谢