ruta obtener how filenameextensionfilter java image swing jfilechooser

how - jfilechooser java obtener ruta



Filtros JFileChooser (5)

Estoy poniendo un JFileChooser en mi programa, pero eso solo toma imágenes.

Para obtener una lista de los tipos admitidos por ese JRE en ese sistema operativo, use ImageIO .

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

Tipos vistos - Java 1.6 / Windows 7

bmp jpg jpeg wbmp png gif

Nota: no codifique esa lista! Puede cambiar de una versión a otra, y de un sistema operativo a otro. P.EJ

  1. No me sorprende que Windows tenga soporte para cargar BMP, pero ¿eso surge en una Mac?
  2. ¡Ver a WBMP me alertó de la existencia de tal formato!

Esa lista tendría muchos más formatos si se instalara jai .

Filtrar como aparece en un selector.

Estoy poniendo un JFileChooser en mi programa, pero eso solo toma imágenes. Así que decidí agregar filtros:

Código

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

Lo obtuve directamente de los tutoriales de Java. Pero Eclipse subraya lo siguiente como un error:

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

¿Alguna sugerencia?


Está utilizando la clase incorrecta de ImageFiler :-)

El ImageFilter del tutorial no es del paquete java.awt que está importando. Este ImageFilter debe implementar javax.swing.filechooser.FileFilter.

Compruebe si hay otra clase de ImageFilter definida en el tutorial y úsela.

Ejemplo de filtro de archivo adecuado:

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


Estoy usando setFileFilter ().

Mi código está abajo (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());


Puede usar la clase FileFilter y luego usar 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; } }

Ahora en tu clase principal:

fc.setFileFilter(new ImageFilter());


el argumento de fc.addChoosableFileFilter() debe ser una subclase de javax.swing.filechooser.FileFilter . Por ejemplo, puedes cambiar tu código como

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