JFileChoose - Só permitir abrir arquivos com a extensão pré-definida

6 respostas
G

Galera, vocês sabem alguma maneira do JFileChooser só abrir arquivos com a extensão pré-definida?

Eu criei um filtro:

Mas se eu colocar pra tentar visualizar todos os arquivos e selecionar um txt por exemplo, ele aceita normalmente.

O que eu realmente queria era que tivesse como bloquear a ação e enviasse uma mensagem avisando que só aceita arquivos da extensão PDF por exempo.

6 Respostas

T
chooser.setAcceptAllFileFilterUsed(false);

Salve API :wink:

G

Obrigado brother mas ainda não é o que preciso…
Precisava enviar uma mensagem mesmo caso não fosse selecionado o PDF…

T

Acho que não tem como ao selecionar você exibir a MSG, mas o mais próximo que eu consegui foi isso!

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		JFileChooser jfc = new JFileChooser();
		jfc.setFileFilter(new FileNameExtensionFilter("Arquivos *.pdf", "pdf"));

		while (true) {
			int i = jfc.showOpenDialog(null);

			if (JFileChooser.APPROVE_OPTION == i) {
				File selectedFile = jfc.getSelectedFile();
				if (!selectedFile.getName().endsWith(".pdf")) {
					JOptionPane.showMessageDialog(null,
							"Somente pdf serão aceitos");
				} else {
					// ação a ser tomada
					break;
				}
			} else {
				break;
			}
		}

	}

}

Note que se você permitir que o usuário selecione mais de um arquivo por vez, você deverá validar um a um, e se um arquivo não for PDF acabará invalidando a ação e o usuário deverá repetir o procedimento, o que pode irritá-lo um pouco ::evil::

C

Amigo o JFileChooser só serve para selecionar os arquivos. Essa mensagem que você quer mostrar tem que ser implementada, como fez o nosso amigo Thiago.

G

Estou vendo mas acredito que esse código resolve o problema.
A única coisa que terei que verificar é que no caso eu pegarei uma lista inteira pelo getSelectedFiles mas se for o caso, jogo dentro do FOR…
É porque na verdade eu preciso daquele ELSE ali que o correa postou. Porque ali, preciso executar uma ação no banco de dados e exibir um display pro usuário avisando.

G

Consegui aqui. Ficou exatamente como eu queria.
E o engraçado é que se seleciono 4 PDFs e apenas 1 TXT… Ele faz as operações com os PDFs e deixa o TXT de lado rs…
Vou dar um jeito de organizar isso aqui pra não fazer nenhuma operação se tiver um TXT no meio.

Valeuuu!!!

Criado 1 de junho de 2012
Ultima resposta 4 de jun. de 2012
Respostas 6
Participantes 3