2012-04-11 127 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); 

我被困在同样的概率。像你一段时间。 ;)