2013-03-11 48 views
1

有什麼辦法,當負載JFileChooser的,其名稱爲「你好」,只顯示文件夾中只有一個文件夾。如何使JFileChooser中僅顯示具有某些特定名稱的Java

這裏是我的代碼:顯示所有文件夾和文件也有.py擴展名和.java。我想將該文件夾名稱限制添加到它。

FileNameExtensionFilter filter = new FileNameExtensionFilter(
      "Select Source Code To Analyze", "java","py"); 
      jfc.setFileFilter(filter); 
      //jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
    JButton btnNewButton = new JButton("Select Erroneous File"); //SELECT File Button. 
    btnNewButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      if (jfc.showOpenDialog(contentPane) != 
         JFileChooser.APPROVE_OPTION) 
          return; 
        File f = jfc.getSelectedFile(); 

當前程序輸出:

enter image description here

我想輸出是有點這樣的:只顯示文件夾有名字「你好」,只有文件的其餘部分。 enter image description here

+1

參見[如何限制JFileChooser,以目錄?(http://stackoverflow.com/questions/32529/how-do-i-restrict-jfilechooser-to-a-directory) – Reimeus 2013-03-11 02:30:03

+1

參見這些[自定義文件瀏覽器](http://stackoverflow.com/q/15149565/230513)。 – trashgod 2013-03-11 02:35:19

+0

查覈[JFileChooser中#addChoosableFileFilter](http://docs.oracle.com/javase/7/docs/api/javax/swing/JFileChooser.html#addChoosableFileFilter(javax.swing.filechooser.FileFilter)),也有頁面頂部的示例 – MadProgrammer 2013-03-11 03:00:23

回答

2

使用文件篩選器是這樣的。

javax.swing.JFileChooser jfc = new javax.swing.JFileChooser(); 
jfc.setFileSelectionMode(javax.swing.JFileChooser.FILES_ONLY); 
jfc.setFileFilter(new javax.swing.filechooser.FileFilter(){ 
    @Override 
    public boolean accept(java.io.File file){ 
     //return (file.isDirectory() && file.getName().equals("Hello")) || !file.isDirectory(); 
     // Get only hello folder and .py files 
     //return (file.isDirectory() && file.getName().equals("Hello")) || (!file.isDirectory() && file.getName().toLowerCase().endsWith(".py")); 
     // Get only hello folder and .java files if Hello folder is opened else .py files 
     return (file.isDirectory() && file.getName().equals("Hello")) || 
     (!file.isDirectory() && file.getParentFile().getName().equals("Hello") && 
     file.getName().toLowerCase().endsWith(".java")) || 
     (!file.isDirectory() && file.getName().toLowerCase().endsWith(".py")); 
    } 
    @Override 
    public String getDescription() { 
     return "Hello Folder and Other Files"; 
    } 
}); 
+0

由於它works..Is當我點擊Hello文件夾時,有任何添加條件的方法,它只列出具有「.java」擴展名的文件,通常當JFileChooser加載時,它只列出Hello文件夾和擴展名爲「.py」的文件。我不知道該把這個條件放在哪裏。 – 2013-03-11 08:11:23

+0

只需在'accept'方法本身中擴展條件即可。更新了答案。 – 2013-03-11 08:25:44

+0

是的,它的工作原理..但是當我選擇你好文件夾,裏面該文件夾在哪裏把條件顯示只有.java文件。真的很感激。 – 2013-03-11 08:29:52

相關問題