FileDialog e FilenameFilter

olá…
eu somente preciso que meu FileDialog realmente filtre os arquivos “.jpg”…
ou seja… quando eu abrir o FileDialog lá em “Tipo” ao invés de dizer All Files “.” tenha Fotos jpg".jpg"
só isso…
jé tentei VÁRIAS maneiras com FilenameFilter mas nunca filtrou nada… ex:

fd.setFilenameFilter(new FilenameFilter() {
    		public boolean accept(File dir, String name) {  
                return name.endsWith(".jpg") ? true : false;
        }
    	});

ou

FilenameFilter filter = new FilenameFilter() {  
    public boolean accept(File dir, String name) {  
        return name.endsWith(".jpg");  // ou name.matches(regex);  
    }  
}  

ou

fd.setFilenameFilter(new FilenameFilter() {  
    	    public boolean accept(File diret, String name) { 
    	    	diret = new File(".");
    	        String lowerName = name.toLowerCase();  
    	        return lowerName.endsWith(".jpg") || lowerName.endsWith(".jpeg");  
    	    }
    	    
    	});  

mas nada dá certo… como eu faço para simplesmente aparecer no FileDialog: Tipo: Imagens jpg ".jpg"
obrigado…

eu fiz um teste aqui e funcionou…

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageFilter;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;

public class TesteFc extends JFrame {
	public TesteFc() {
		super("Teste JFileChooser");

		Container c = getContentPane();
		FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
		c.setLayout(layout);

		JButton btn = new JButton("Escolher Diretório");
		btn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFileChooser fc = new JFileChooser();

				fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

				fc.addChoosableFileFilter(new FileFilter(){

					@Override
					public boolean accept(File f) {
					       if (f.isDirectory()) {
					            return true;
					        }
					       
					      return (f.getName().endsWith(".pdf") ||f.getName().endsWith(".PDF") );
					   
					       	
					}

					@Override
					public String getDescription() {
						return "Pdf Files";
					}});

				fc.setAcceptAllFileFilterUsed(false);
				
				int res = fc.showOpenDialog(null);

				JOptionPane.showMessageDialog(null, fc.getSelectedFile().getAbsolutePath());

			}
		});

		c.add(btn);

		setSize(400, 200);
		setVisible(true);
	}

	public static void main(String[] args) {
		TesteFc app = new TesteFc();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

ai é só ir criando e adicionando os filters, conforme sua necessidade.

Achei alguns exemplos no google, mas nenhum fazia o que eu queria, portanto fui juntando e saiu o Frankestein ae… :smiley:

[]'s

vlw pela ajuda…
mas o que eu não consigo fazer é adicionar um filtro no FileDialog do pacote awt…
com o JFileChooser é tranquilo… o problema mesmo é com o FileDialog…

http://java.sun.com/javase/6/docs/api/java/awt/FileDialog.html

Dá a impressão que o java.awt.FileDialog não tem o que você quer, até porque o java.io.FilenameFilter não tem nenhum método que, sobreescrito, retorne a descrição.

[quote=erico_kl]vlw pela ajuda…
mas o que eu não consigo fazer é adicionar um filtro no FileDialog do pacote awt…
com o JFileChooser é tranquilo… o problema mesmo é com o FileDialog…[/quote]

Mas se você sabe como usar o componente no swing, será que precisa de um similar no AWT (não dá pra resolver com swing mesmo?).

E lá no início do tópico, você já tentou a terceira solução, só que sem a linha 3:

    	fd.setFilenameFilter(new FilenameFilter() {  
    	    public boolean accept(File diret, String name) { 
    	    	// diret = new File("."); // porque disso? atribuir um novo file ao que é passado?!?
               // tente só com isso:
    	        String lowerName = name.toLowerCase();  
    	        return lowerName.endsWith(".jpg") || lowerName.endsWith(".jpeg");  
    	    }
    	    
    	});  

já… já tentei e com o FileDialog realmente não consigo filtrar nada…
eu não uso o JFileChooser pq ele sempre retorna um erro quando eu tento selecionar um arquivo ou pasta pela guia de cima
o erro é “Unable to bind ‘nome da pasta ou arquivo’”…
eu não sei se é problema do Vista ou do JFileChooser mas de implementação não é pois tenho uma IDE desenvolvida totalmente em swing que usa o JFileChooser e não consigo abrir arquivos/pastas pela guia de cima também…
ah… o nome da IDE é FreeJava…