Фильтры JFileChooser

Я помещаю JFileChooser в свою программу, но это только принимает изображения. Поэтому я решил добавить фильтры:

Код

 import javax.swing.*; public class fileChooser { public static void main(String[] args) { JPanel panel = new JPanel(); final JFileChooser fc = new JFileChooser(); int file = fc.showOpenDialog(panel); fc.addChoosableFileFilter(new ImageFilter()); fc.setAcceptAllFileFilterUsed(false); } } 

Я получил это прямо из учебников Java. Но Eclipse подчеркивает следующее как ошибку:

 fc.addChoosableFileFilter(new ImageFilter()); fc.setAcceptAllFileFilterUsed(false); 

Какие-либо предложения?

Я помещаю JFileChooser в свою программу, но это только принимает изображения.

Для списка типов, поддерживаемых этой JRE на этой ОС, используйте ImageIO .

 FileFilter imageFilter = new FileNameExtensionFilter( "Image files", ImageIO.getReaderFileSuffixes()); 

Виды – Java 1.6 / Windows 7

 bmp jpg jpeg wbmp png gif 

Примечание: не печатайте этот список! Он может меняться от версии к версии и от ОС к ОС. НАПРИМЕР

  1. Я не удивлен тем, что Windows поддерживает загрузку BMP, но это происходит на Mac?
  2. Видя, что WBMP предупреждает меня о существовании такого формата!

У этого списка было бы больше форматов, если бы был установлен jai .

Фильтровать, как он появляется в выборе

Выбор изображения

аргумент fc.addChoosableFileFilter() должен быть подclassом javax.swing.filechooser.FileFilter . Например, вы можете изменить свой код как

 fc.addChoosableFileFilter(new FileNameExtensionFilter("Image Files", "jpg", "png", "tif"); 

Я использую setFileFilter ().

Мой код ниже (JAVA-JSE 1.6)

 JFileChooser c = new JFileChooser(); //Setting Up The Filter FileFilter imageFilter = new FileNameExtensionFilter( "Image files", ImageIO.getReaderFileSuffixes()); //Attaching Filter to JFileChooser object c.setFileFilter(imageFilter); //Displaying Filechooser int rVal = c.showOpenDialog(new JPanel()); 

Вы используете неправильный class ImageFiler 🙂

ImageFilter из учебника не из пакета java.awt, который вы импортируете. Этот ImageFilter должен реализовать javax.swing.filechooser.FileFilter.

Проверьте, есть ли другой class ImageFilter, определенный в учебнике, и используйте его.

Пример правильного файлового фильтра:

 new JFileChooser().addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { // TODO Auto-generated method stub return f.getName().endsWith(".jpg"); } @Override public String getDescription() { return "JPEG files"; } }); 

Вы можете использовать class FileFilter а затем использовать setFileFilter()

 class ImageFilter extends FileFilter { @Override public boolean accept(File pathname) { String filename = pathname.getName(); if (pathname.isDirectory()) { return true; } else if (filename.endsWith("jpg'") || filename.endsWith("jpeg") || filename.endsWith("png") || filename.endsWith("gif")) { return true; } else { return false; } } 

Теперь в вашем основном classе:

 fc.setFileFilter(new ImageFilter()); 
  • Как заставить пример SwingWorker работать правильно?
  • Автогенерированный код GroupLayout в NetBeans
  • Поверните JLabel или ImageIcon на Java Swing
  • Как сменить JPanel внутри JFrame на лету?
  • Использование DocumentFilter.FilterBypass
  • Могу ли я иметь текстовое поле внутри метки?
  • Встраивание карт Google в приложение для Java-приложений
  • Использование нескольких JFrames: хорошая или плохая практика?
  • вращающаяся координатная плоскость для данных и текста в Java
  • Воспроизведение нескольких аудиоклипов с использованием объектов Clip
  • Ограниченный выбор в JTextField / JTextComponent?
  • Давайте будем гением компьютера.