无法使FileNameExtensionFilter工作

时间:2012-04-11 17:10:00

标签: java jfilechooser

我无法让我的JFileChooser只显示我想要的扩展名(文本文件)。

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");
        }
    }

}

}

它还没有完成,但它仍然能够处理我正在进行的扩展问题。

2 个答案:

答案 0 :(得分:2)

请尝试使用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");
    }
}

答案 1 :(得分:0)

我知道你的问题已经回答了,但万一你不知道...... 您也可以使用FileNameExtensionFilter并执行:

fc.setFileFilter(textFilter);

我被困在同样的问题上。就像你一段时间。 ;)