Boa tarde pessoal.
Estava trabalhando no desenvolvimento em uma tela do front-end de um TCC de um curso meu através do construtor de JFrames no NetBeans (8.2), selecionei algumas imagens e as coloquei em um JLabel, mas ao iniciar o sistema, são lançadas exceções quanto ao getResource(), código que é gerado automaticamente pelo construtor de interface gráfica.
O que mais me incomoda é que até alguns dias atrás, telas que não foram modificadas funcionavam corretamente, e agora não funcionam mais.
Antes que respondam com que o problema é o caminho da imagem, os arquivos foram selecionados pelo construtor de interface gráfica.
Segue o link de um pequeno álbum no imgur com screenshots do problema, do código e do pacote das imagens que são utilizadas, já que não posso dar upload em mais de um arquivo aqui.
Agradeço desde já.
Posta o código que tu tá usando pra carregar o ícone no JLabel!
Ps: não use print de imagens, cole seu código aqui e formate o mesmo clicando sobre o botão < / >
Boa tarde. Segue o código.
labelLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/logoSemEscrita.png"))); // NOI18N
jPanel1.add(labelLogo, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 50, -1, -1));
Código gerado direto pelo netbeans ?
Se for, remova a imagem, salve, execute o projeto, depois insira a imagem novamente, salve e execute!
As vezes acontece do netbeans se perder, e o simples fato de remover e adicionar novamente faz com que o problema seja corrigido!
Boa noite.
Fiz o instruído, mas, sem sucesso. Alguma outra alternativa?
Quando tu remove o projeto funciona normalmente ?
Imagino que queira dizer a imagem? Se sim, correto, funciona normalmente. O problema existe em todas telas que usam ícones.
Tem certeza que a pasta imagens está no classpath da sua aplicação?
Blz, então tenta excluir as imagens dentro do diretório resources do seu projeto e adicione novamente!
Caso não funcione, atribua as imagens via código no construtor da classe!
Caso não funcione, atribua as imagens via código no construtor da classe!
Tentei fazer isso mais cedo, não funcionou.
Blz, então tenta excluir as imagens dentro do diretório resources do seu projeto e adicione novamente!
No caso, meu projeto não tem uma pasta resources definida. As imagens ficam localizadas em um pacote ‘imagens’ no src, assim como pacote ‘view’, que possui as telas.
O pacote que contém as imagens está no mesmo diretório do que contém as telas, ambos no ‘src’.
O getResource retorna um objeto URL.
Substitua por getResourceAsStream:
InputStream input = getClass().getResourceAsStream("/imagens/logoSemEscrita.png");
Image image = ImageIO.read(input);
labelLogo.setIcon(new ImageIcon(image));
Sem sucesso. O método getResourceAsStream() também retorna null.
Usei o seguinte código para criação do ícone:
InputStream inp = getClass().getResourceAsStream("/imagens/logoSemEscrita.png");
Image icone = null;
try{
icone = ImageIO.read(inp);
}catch(Exception e){
e.printStackTrace();
}
labelLogo.setIcon(new ImageIcon(icone));
Ao imprimir o método getResourceAsStream() no construtor, ele confirma o null.
System.out.println(getClass().getResourceAsStream("/imagens/logoSemEscrita.png"));
Consegui resolver o problema. Creio que não seja a melhor solução, mas a opção de “Limpar e construir” do NetBeans resolveu o problema.
Então suas imagens não estão no classpath quando sua aplicação está executando, simples assim.
Estou com o mesmo problema. Já tentei de tudo e continua dando erro. Ele não encontra a foto de jeito nenhum. Isso nunca me aconteceu.