Erro ao cancelar jFileChooser!

7 respostas
E
Pessoal estou com uma aplicação que possui um formulário para cadastros de clientes , nele tem a opção de selecionar uma foto atravéz de um botão que chama o jFileChooser, até ai tudo bem, ele seleciona o arquivo e faz o que eu desejo, mas o problema está quando eu cancelo sem selecionar nenhum arquivo, o programa trava e num faz mais nada.... vou postar o código ....
int retorno = FileChooser.showOpenDialog(null);
        enderecoImagem= "";

        if(retorno== JFileChooser.APPROVE_OPTION){
            enderecoImagem = FileChooser.getSelectedFile().getAbsolutePath();
            TelaCadastrarAluno.enderecoImagem=enderecoImagem;
            TelaAlunoView.enderecoImagem = enderecoImagem;
            //JOptionPane.showMessageDialog(null, enderecoImagem);
            dispose();
               
        }
        else if(retorno==JFileChooser.CANCEL_OPTION)
        {
                this.dispose();

        }

gera esse erro

java.lang.NullPointerException
at java.io.FileInputStream.(FileInputStream.java:103)
at java.io.FileInputStream.(FileInputStream.java:66)
at sun.awt.image.FileImageSource.getDecoder(FileImageSource.java:35)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

7 Respostas

ViniGodoy

Tem certeza que esse erro é por causa do JFileChooser? Não aparece nenhuma classe sua nessa exception.

De qualquer forma, fica mais simples o seu código se for assim:

if(FileChooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION){
   dispose();
   return;
}
enderecoImagem = FileChooser.getSelectedFile().getAbsolutePath();
TelaCadastrarAluno.enderecoImagem=enderecoImagem;
TelaAlunoView.enderecoImagem = enderecoImagem;
dispose();

PS: O primeiro parâmetro do FileChooser e do JOptionPane é importante. Nele, ao invés de null, você deve passar a janela que está abrindo esse FileChooser.

Ele geralmente é this ou, se vc estiver num listener, será SuaJanela.this, onde SuaJanela é o nome da classe da sua janela.

E

Coloquei esse código ai que você me passou mas continua com o mesmo erro!!!

onde será que pode está esse erro ta aqui o código de onde eu chamo o internalFrame onde está o JfileChooser
private void procurarButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               

        TelaCarregarFoto telaCarregarFoto = new TelaCarregarFoto();
        TelaPrincipal.deskPane.add(telaCarregarFoto);
        telaCarregarFoto.setVisible(true);
        telaCarregarFoto.setLocation((TelaPrincipal.deskPane.getWidth() - telaCarregarFoto.getWidth())/2, (TelaPrincipal.deskPane.getHeight() - telaCarregarFoto.getHeight())/2);
        telaCarregarFoto.dispose();

        atualizarImagem();
    }

o mesmo erro continua

java.lang.NullPointerException
at java.io.FileInputStream.(FileInputStream.java:103)
at java.io.FileInputStream.(FileInputStream.java:66)
at sun.awt.image.FileImageSource.getDecoder(FileImageSource.java:35)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

ViniGodoy

A exceção é só isso? Não tem mais coisa não?

E

É só isso mesmo… o engraçado é que quando tem uma imagem selecionada o fileChooser funciona normal

E

ViniGodoy...valeu a ajuda, consegui resolver.

agora só tem um probleminha ta aparecendo duas vezes a tela do fileChooser. ficou assim
if(FileChooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION){
        TelaCarregarFoto.this.dispose();
   
     }  
        enderecoImagem = FileChooser.getSelectedFile().getAbsolutePath();
        TelaCadastrarAluno.enderecoImagem=enderecoImagem;
        TelaAlunoView.enderecoImagem = enderecoImagem;
        dispose();

    }
E

pronto ja ta resolvido…
era uma besteira minha não tinha apagado um showOpenDialog(this);
logo acima :smiley:

valeu ViniGodoy pela ajuda.

E

Apareceu outro problema :?

quando vou carregar a imagem que foi salva no BD(só o endereço) ela não abre o que pode ser?
imgViewLabel.setIcon( new ImageIcon(alunoVO.getFoto()));// aqui onde pego do bd
 atualizarImagem();

 public void atualizarImagem()
    {

       ImageIcon img = new ImageIcon(alunoVO.getFoto());
        int tamanho = 140;
    imgViewLabel.setIcon( new ImageIcon(
        img.getImage()
        .getScaledInstance(
            tamanho,
            ((img.getIconHeight()*tamanho)/img.getIconWidth()*2),
            Image.SCALE_DEFAULT
        )  )
    );
              
    }

imgViewLabel é onde vou setar a foto
ahh enderecoImagem é como é salva, é uma String

Criado 15 de abril de 2011
Ultima resposta 19 de abr. de 2011
Respostas 7
Participantes 2