Erro ao adicionar ícones

Eae, galera. Boa tarde.
Sou novo aqui e no mundo Java (haha).

Tô fazendo um trabalho em Java pra faculdade e tô querendo adicionar ícones nos botões e demais lugares, o problema é que ao adicionar alguns dos ícones (alguns não dão erro), me é retornada a seguinte exceção do Java:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
	at Interface.MenuPrincipal.initComponents(MenuPrincipal.java:42)
	at Interface.MenuPrincipal.<init>(MenuPrincipal.java:8)
	at Interface.MenuPrincipal$8.run(MenuPrincipal.java:241)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)`

Já conferi o endereço da imagem e tá certo.

Button_Busca.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Interface/images/ic_search_black_18dp.png")));

Alguém me dá um help aí pra eu conseguir deixar minha aplicação mais bonitinha? hehehe

@EDIT

  • Já criei uma pasta só para importar as imagens, dentro do projeto
  • Estou importando as imagens pelo próprio GUI (propriedades/icon)
  • O caminho da imagem tá certo.
  • O nome da imagem tá certo

Só para saber, você testou passando o endereço completo?

Exemplo:

Button_Busca.setIcon(new javax.swing.ImageIcon(getClass().getResource("c:\\users\\imagens\\imagem.jpg")));

1 curtida

coloca as img na pasta do projeto src/main/resourcers

Os métodos getResource e getResourceAsStream não funcionam com caminhos absolutos, somente com caminhos relativos.

O que é essa pasta Interface?
É um diretório de fontes?
É um pacote?
É a pasta do seu projeto na IDE que está utilizando?

Posta sua estrutura de pastas.

1 curtida

Quando eu pego as imagens que não estão no projeto dá de boa.
O problema é quando eu as importo pro projeto.
E tipo, eu preciso enviar o trabalho pra professora, então as imagens precisam ir…

image

Já fiz, nada tbm. Igual falei, algumas dão certo, outras não…

vê o formato da imagem.

As imagens não aparecem quando roda o sistema a partir do JAR, ou quando roda dentro da IDE mesmo?

Não tenho JAR ainda (pela falta de classes, só tenho os JFrame ainda), então é na IDE mesmo…

Essa URL está apontando para a pasta images, e na estrutura que vc mandou, o pacote se chama imagens. Será que vc não está colocando alguns caminhos de imagens errados no seu código não?

Verdade, mas tá assim pq eu tinha alterado o código antes do print… O diretório continua certo no código.

eu nao cheguei a testar, mas acredito que seja pq vc colocou as imagens dentro da estrutura de pacotes.
dentro da pasta src do seu projeto, crie uma pasta ‘resources’, vai ficar nesse diretorio a pasta resources e a pasta java. dai voce coloca a pasta imagens dentro de resources e referencia assim:

Button_Busca.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ic_search_black_18dp.png")));

caso queira o mesmo caminho, dentro de resources crie a pasta Interface e dentro dela a images.

Nada ainda…

Tu não pode disponibilizar seu código pra gente dá uma olhada não? Teria algum problema? Se for possível, coloca no github e manda o link

O que tem na linha 42? Vc pode estar mudando uma coisa, e o erro pode ser em outro lugar.

Caso não queira passar o código, posta ao menos um trecho de onde está dando erro