如何让 JFileChooser 记住以前的文件夹?

问题描述 投票:0回答:2

我试图让 JFileChooser 记住上次打开的位置,然后下次打开那里,但似乎不记得了。我必须打开它两次: 第一次运行时效果很好。但在第二次运行时,第一次运行时的路径仍然被锁定。我必须打开 JFileChooser 对话框两次才能获取更新的路径...

//Integrate ActionListener as anonymous class
this.openItem.addActionListener(new java.awt.event.ActionListener() {
    //Initialise actionPerformed 
    @Override
    public void actionPerformed(java.awt.event.ActionEvent e) {
        //Generate choose file
        this.chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int returnVal = this.chooser.showOpenDialog(PDFcheck.this.openItem);
        if (this.theOutString != null){
        this.chooser.setCurrentDirectory(new File(this.theOutString)); }
        if(returnVal == JFileChooser.APPROVE_OPTION) {
        //theOutString = fc.getSelectedFile().getName();
        this.theOutString = this.chooser.getSelectedFile().getPath();
        System.out.println("You chose to open this file: " + this.theOutString);}
        }
        private String theOutString;
        private final JFileChooser chooser = new JFileChooser();
         });

谢谢;-)

java swing jfilechooser
2个回答
2
投票

问题是您首先显示文件选择器对话框,然后仅设置其当前目录。

您应该先设置当前目录,然后显示对话框:

if (this.theOutString != null)
    this.chooser.setCurrentDirectory(new File(this.theOutString));
int returnVal = this.chooser.showOpenDialog(PDFcheck.this.openItem);

0
投票

如果您重复使用相同的 JFileChooser,它会记住选择文件的最后一个目录。例如,这可以通过以下代码风格来实现。

public class MyClass extends JFrame {
   private JFileChooser filechooser = new JFileChooser();

   private void myfunction() {
      if (this.filechooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION) {
         ... your code here ...
      }
   }
}

此行为清楚地记录在: https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

© www.soinside.com 2019 - 2024. All rights reserved.