2012-04-11 3 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

+0

Хмм я перезагрузил свой компьютер через несколько дней, и теперь он работает - спасибо за помощь. –

ответ

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

Я был застрял на той же пробке. как вы на некоторое время. ;)

Смежные вопросы