Estava trabalhando em um sistema para uso pessoal e fiquei apanhando para colocar uma imagem tipo "favicon" para sistemas desktop,Java SE, não em um jLabel, mas sim no ícone principal do jFrame.
Como há dois ambientes, desenvolvimento e produção, estava trabalhando com a imagem funcionando no desenvolvimento e na produção a imagem não aparecia, e aí muitos podem está passando pela dificuldade que eu passei, e muitos também pode está rindo deste post.
Segue o exemplo que estava no ambiente de desenvolvimento:
private File caminhoImagem; private Image iconTitulo;
//Dentro do construtor atribuía
this.caminhoImagem = new File("./src/imagens/radar32.png"); this.iconTitulo=Toolkit.getDefaultToolkit().getImage(this.caminhoImagem.getAbsolutePath());
this.setIconImage(this.iconTitulo);
Então eu fazia deste modo acima, porém tinha o x da questão, no desenvolvimento aparecia mas na produção NÃO! Então como fazer para aparecer nos dois.
Como sabemos, no Netbeans, tem o modo gráfico e na propriedade, por exemplo, de um jLabel tem a opção Icon, então fui analisar como se comportava e o netbeans atribuía assim:
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/refresh-icon.png"))
O atributo dentro do setIcon deve ser do tipo Icon e no jframe tem que ser Image. Então como eu conseguir ter o resultado esperado?
Se eu tenho um Objeto de ImageIcon nele tem a propriedade getImage() e aí vem o segredo. Ao invés de digitar tudo o que fiz da primeira vez, eu posso substituir por uma linha só e funciona para os dois ambientes, como segue abaixo:
this.setIconImage(new javax.swing.ImageIcon(getClass().getResource("/imagens/radar32.png")).getImage());
Então fica a dica, sei que é bem iniciante, eu acredito que seja, mas eu me passei. Depois vou fazer um post sobre este sistema. Até a próxima