Boa tarde pessoal…
Estou desenvolvendo uma aplicação em que a janela principal é consideravelmente grande, muitos componentes.
Esta aplicação já tem cerca de 5 meses de desenvolvimento, porém há mais ou menos 3 semanas eu e meus colegas começamos a perceber que alguns ícones não eram carregados quando a app era executada. Os botões aparecem vazios. Isso acontece em vários pontos da janela principal, em ícones diferentes. Ás vezes eles carregam, às vezes não. Nenhum erro é exibido. E se eu faço um getIcon() no componente que não carregou o ícone, ele retorna diferente de null.
Faz alguns dias que venho tentando resolver isso e não acho uma solução… se alguem tiver alguma idéia do que possa ser.
Vc esta usando windows , linux!?
Dependendo do sistema até uma barra invertida , acento , Letra maiusculo-minuscula interfere.
Quando um código é feito no windows e depois aberto no linux ele converte alguns caracteres dando erros na string , assim o java não acusando as vezes.
Mostre umas da linhas onde vcs colocam o icone que não aparece. =D
Eu uso linux, e a execução é feita no linux também.
Segue uma linha de exemplo como eu seto o ícone:
botao.setIcon(new ImageIcon(getClass().getResource("/icons/iconRemove.png");
Mas o estranho é que por exemplo na execução 1 esse ícone carrega e na execução 2 ele não carrega. Isso usando o mesmo .jar.
Obs.: Faltaram fechar 2 parênteses na minha resposta a cima, mas foi só um exemplo, não retirei essa linha do código.
eu não consigo usar os icones dentro do jar então não uso getClass().getResource . ‘-’
eu apenas declaro o local fora do jar.
Ex.:
botao.setIcon(new ImageIcon(“icons/iconRemove.png”));
Como não lido com icones dentro do jar eu não tenho a minima idéia! = /
Boa sorte ai! =D
Pois é, já tentei colocá-los fora do .jar pra ver se resolvia, mas acontece a mesma coisa.
Valeu.
se vc da um getIcon e ele retorna diferente de Null, então ele foi carregado e está com algum erro na exibição mesmo
vc pode tentar um updateUI ou repaint na tela onde eles nao aparecem após a inserção de todos os componentes na tela ( e antes do setVisible )