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
- No me sorprende que Windows tenga soporte para cargar BMP, pero ¿eso surge en una Mac?
- ¡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");