2012-04-11 129 views
1

我無法讓JFileChooser只顯示我想要的擴展名(文本文件)。無法讓FileNameExtensionFilter工作

JFileChooser fc = new JFileChooser(); 
      FileNameExtensionFilter textFilter = new FileNameExtensionFilter("Text Files","txt"); 
      fc.addChoosableFileFilter(textFilter); 

我在做什麼錯?如果我刪除過濾器,則會顯示文本文件。 問題可能看起來很愚蠢,但我試圖找到解決方案,我的代碼看起來與其他示例相同。也許我只是大腦鎖定。

謝謝您的時間

我嘗試了建議的做法,我仍然有同樣的問題。所以其他地方一定有什麼問題。我將加載類代碼 - 也許有人能發現我在做什麼錯:

import java.awt.event.ActionEvent; 

import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.filechooser.FileNameExtensionFilter; 


public class ButtonListener implements ActionListener { 

private JFrame fr; 

public ButtonListener (JFrame frame){ 
    fr = frame; 
} 

public void actionPerformed(ActionEvent event) { 
    if(event.getSource() instanceof JButton) { 
     String action = event.getActionCommand(); 

     if (action.equals("First text")){ 

      JFileChooser fc = new JFileChooser(); 
      FileNameExtensionFilter textFilter = new FileNameExtensionFilter("Text Files","txt"); 
      fc.addChoosableFileFilter(textFilter); 
      int returnVal = fc.showOpenDialog(fr); 
      } 
     else if (action.equals("Second text")){ 

      } 
     else { 
      System.out.println("Error in ButtonListener"); 
     } 
    } 

} 

}

還沒有完成,但它仍然應該能夠處理,然後,我有延長的問題。

+0

此代碼適用於我。您可能會遇到導致此行爲的不同問題 – ControlAltDel 2012-04-11 17:17:18

+0

嗯,我在幾天後重新啓動計算機,現在可以運行 - 感謝您的幫助。 – 2012-04-18 14:56:26

回答

1

嘗試使用setFileFilter代替。

我從來沒有使用過的FileNameExtensionFilter,但它很高興他們加入這個方便類的Java 1.6

我一直只是擴展FileFilter類,然後覆蓋接受。 使用我的類定義見下文,然後你可以寫

chooser.setFileFilter(new OpenFileFilter("txt")); 

/** 
* This class defines which file types are opened (by default) by the program. 
* This file filter is used to associate a single file type (extension) with the program. 
* You could add more than one file type to the open file dialog using this class by repeatedly 
* calling addFileFilter. 
*/ 
import java.io.File; 
import javax.swing.filechooser.*; 

public class OpenFileFilter extends FileFilter { 
    public String fileExt = ""; 
    String txtExt = ".txt"; 

    public OpenFileFilter() { 
     this(".pxml"); //default file type extension. 
    } 

    public OpenFileFilter(String extension) { 
     fileExt = extension; 
    } 

    @Override public boolean accept(File f) { 
     if (f.isDirectory()) 
      return true; 
     return (f.getName().toLowerCase().endsWith(fileExt)); 
    } 

    public String getDescription() { 
     if(fileExt.equals(txtExt)) 
      return "Text Files (*" + fileExt + ")"; 
     else 
      return ("Other File"); 
    } 
} 
0

我知道您的問題已經回答了,但以防萬一你不知道... 你可以有也可以使用你FileNameExtensionFilter,只是做:

fc.setFileFilter(textFilter); 

我被困在同樣的概率。像你一段時間。 ;)