2016-04-14 48 views
1

我正在處理這個擺動組件JfileChooser。我正在選擇多個文件,然後單擊確定。 之後,如果我再次打開選擇文件,它顯示我以前選擇的文件,我不想要。 我希望保留以前的目錄,但不保留以前的文件。它會給用戶帶來不好的體驗。打開jfilechooser多文件選擇器啓用對話框後,文件顯示選定的文件

這是我寫的代碼片段。

JFileChooser fileopen = new JFileChooser(); 
     private void fileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileButtonActionPerformed 
      fileopen.setMultiSelectionEnabled(true); 
      int ret = fileopen.showDialog(null, "Open file"); 
      if (ret == JFileChooser.APPROVE_OPTION) { 
       File[] file = fileopen.getSelectedFiles(); 
       fileText.setText(file[0].getAbsolutePath()); 
       for(int i =1;i < file.length;i++) 
       { 
        fileText.append("||");  
        fileText.append(file[i].getAbsolutePath()); 
       } 
      }else { 
       log.info("File access cancelled by user."); 
     }  

    }//GEN-LAST:event_fileButtonActionPerformed 

我試着用那些setcurrentdirecotory和所有。任何幫助將不勝感激。

+0

你能告訴我你有什麼用setcurrentdirectory嘗試過的代碼? – Assen

+0

File currentDirectory = fileopen.getCurrentDirectory(); \t fileopen.setSelectedFile(new File(「」)); \t fileopen.setCurrentDirectory(currentDirectory); –

+0

爲了更好地提供幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –

回答

1

要麼每次你需要它,或致電setSelectedFiles,並將它傳遞null

更新

左右的時間打造JFileChooser一個新的實例,我有一個快速瀏覽一下setSelectedFilesetSelectedFiles方法,他們應該被清除選擇和「文件名」字段,但它似乎並沒有在Mac OS上爲我工作,所以這可能是一個外觀和感覺問題。

我傾向於做的是欺騙。我將最後一個目錄值存儲在Preferences API中,我這樣做是因爲它非常容易,它也意味着該值在執行過程中保持不變,非常有幫助。如果你不希望跨堅持執行它,你可以使用一個MapProperties或其他一些變量,這取決於你

public class TestPane extends JPanel { 

    public TestPane() { 
     setLayout(new GridBagLayout()); 
     JButton btn = new JButton("..."); 
     add(btn); 
     btn.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       JFileChooser fileopen = new JFileChooser(); 
       String path = Preferences.userNodeForPackage(TestPane.class).get("FileAccess.lastSelectedDirectory", null); 
       if (path != null) { 
        File filePath = new File(path); 
        if (filePath.exists() && filePath.isDirectory()) { 
         fileopen.setCurrentDirectory(filePath); 
        } 
       } 
       fileopen.setMultiSelectionEnabled(true); 
       int ret = fileopen.showDialog(null, "Open file"); 
       if (ret == JFileChooser.APPROVE_OPTION) { 
        File[] file = fileopen.getSelectedFiles(); 
        System.out.println("You selected " + file.length + " files"); 
        Preferences.userNodeForPackage(TestPane.class).put("FileAccess.lastSelectedDirectory", fileopen.getCurrentDirectory().getAbsolutePath()); 
       } else { 
        System.out.println("File access cancelled by user."); 
       } 
      } 
     }); 
    } 

    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(200, 200); 
    } 

} 
+0

當我打開一個文件選擇器來發現我需要從某個「默認目錄」導航到其他驅動器上的子目錄結構中時(通常情況下),這真的讓我很不舒服,每次我都會***打開(或保存)文件!請爲了用戶的愛,在'創建新選擇器'上使用'setSelectedFiles'選項。 '' –

+0

nope setSelectedfiles不工作我試過fileopen.setSelectedFile(null); –

+0

@AndrewThompson同意,我通常會將最後一個目錄放入'Preferences'中,並在打開Diaog之前重置它。 – MadProgrammer

相關問題