ImageIcon

7 respostas
afdestro

quando eu rodo meu programa dentro do eclipse ele abre normal…
porem qunado tento executar o jar dele no prompt… da nullpointerexception na linha em q eu adiciono a imagem no botão…

private JButton addButton(JPanel panel, String icon, String tolltip) {
		JButton b = new JButton();
		b.setIcon(new ImageIcon(Image.class.getResource(icon)));
		b.setToolTipText(tolltip);
		b.setPreferredSize(new Dimension(30,30));
		b.addActionListener(new EventosControle());
		b.setBackground(Color.decode("#EEEEEE"));
		b.setFocusable(false);
		b.setBorderPainted(false);
		panel.add(b);
		return b;
	}

7 Respostas

gilliard_santos

da uma olhada se o caminho do icone que voce esta passando esta certo. as vezes por estar dentro do eclipse ele facilita as coisas em relacao ao classpath.

T

Eu usaria algo parecido com

b.setIcon(new ImageIcon(getClass().getResource(icon)));

e conferiria o valor do parâmetro “icon”. Um exemplo: “/resources/meuicone.jpg”

Dica: para o Java, se o arquivo estiver DENTRO DE UM JAR, “meuicone.jpg” != “meuicone.JPG”. Se ele estiver fora, ambas as formas são equivalentes.

Um colega meu não entendia porque as coisas funcionavam dentro do NetBeans (onde o programa rodava com os .class todos “explodidos”) mas não funcionavam fora dele (onde o programa rodava dentro de um “.jar”).

Depois que normalizamos todos os nomes dos arquivos para ficarem todos
em minúsculas, o problema parou de acontecer.

afdestro

coloquei o getClass mas tbm não funcionou… e o caminho esta correto…

playB = addButton(p2, "/img/play.gif", "Play");

agora até no eclipse não abre mais ;/

Fabio_Montefuscolo

Olá

Eu também tive um problema semelhante. Não é muito viável, mas tenta colocar o caminho completo para imagem para ver o que acontece. Se você conseguir progresso, poste-o por favor.

Boa Sorte,
Fabio Montefuscolo

P

o problema é que vc não colocou suas imagens dentro de um arquivo .jar ou não informou no classpath.
Um exemplo simples:
suas imagens estão no package projeto.imagens e estão no arquivo c:\prj\img.jar. Se eu quero abrir uma imagem que está nesse pacote eu executo o comando getClass().getResource("/projeto/imagens/img.jpg") ele irá retornar null se a imagem não for encontrada ou uma url com o caminho c:/prj/img.jar!/projeto/imagens/img.jpg se for encontrado. E ele só não encontra se a imagem não existir no img.jar ou não foi incluido no classpath o img.jar.

:slight_smile:

afdestro

caminho completo funciona sim…
mas eu preciso distribui esse jar…

então eu tenho q fazer um jar apenas pras fotos?
pq elas estão dentro do .jar com o programa todo…

;p

P

Você precisa distribuir o .jar sim, pq ele tb faz parte do projeto, entendeu!!!

não! O package onde se encontra a imagem é um package como outro qualquer, em um mesmo package pode ter classes e imagens!!!

para facilitar o retorno da url use esse comando:

Class.class.getResource(<imagem>);
Criado 14 de dezembro de 2006
Ultima resposta 15 de dez. de 2006
Respostas 7
Participantes 5