* Visite o ALJUG - http://aljug.blogspot.com - Noticias sobre a comunidade java alagoana e do mundo * Visite o blog Mundo Gamificado www.mundogamificado.com.br - E vamos mudar o mundo! *

quarta-feira, 23 de dezembro de 2015

Atribuindo Imagens em Java SE

Olá pessoal,

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