Finalizando a thread do JFileChooser

3 respostas
P

Gente, o negócio é o seguinte: eu tô tentando montar uma classe q tenha um JFileChooser e que retorne o path do diretório selecionado. O problema é que quando o JFileChooser é instanciado ele simplesmente passa a eternidade em execução. Não consegui de forma alguma fazer com q a execução da classe seja finalizada a não ser com um System.exit(0). Só q se eu usar esse comando, fecha-se a classe q contém o JFileChooser e a classe que instanciou a anterior tb. Alguém faz alguma idéia de como eu paro essa m… desse JFileChooser?

Segue um exemplo do código q tô fazendo.

public class Test{

public static void main(String[] args){

JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

chooser.showOpenDialog(new JFrame());

File file = chooser.getSelectedFile();

System.out.println(file.getAbsolutePath());

}

}

Abraços.

3 Respostas

passos

Não entendi direito? Qd vc clica no Open ou Cancel ele nao fecha?

OBS: Quando postar um codigo coloca dentro de [ code ] codigo [ / code ]

P

Não fecha de jeito nenhum. Se vc pegar o código q eu escrevi e executar, vc vai notar q em qualquer botão q vc clicar (ok, cancelar ou naquele “x” no canto direito superior pra fechar) a tela fecha mas a aplicação continua rodando.

passos

Isso acontece pq vc colocou um JFrame mas nao implementou o que fazer caso aperte o botão [x]

Pq vc nao coloca um frame com um botão e então ao clicar no botão abre o chooser?

public static void main(String[] args) {

		JFrame framePrincipal = new JFrame();
		framePrincipal.setSize(400, 300);
		framePrincipal.addWindowListener(
			new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					System.exit(0);
				}
			}
		);

		JPanel painel = new JPanel();
		framePrincipal.add(painel);

		JButton botao = new JButton("Procurar");
		botao.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				procurarArquivo();
			}
		});

		painel.add(botao);

		framePrincipal.setVisible(true);
		
	}

	private static void procurarArquivo() {
		JFileChooser chooser = new JFileChooser();
		chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
		chooser.setFileFilter(new FileFilter() {
			public boolean accept(File file) {
				return file.getName().toUpperCase().endsWith(".DAT");
			}

			public String getDescription() {
				return ".DAT";
			}
		});
		chooser.setVisible(true);
		chooser.showOpenDialog(new JFrame());
		System.out.println(chooser.getSelectedFile().getAbsolutePath());
	}
Criado 28 de julho de 2005
Ultima resposta 2 de ago. de 2005
Respostas 3
Participantes 2