Adicionar imagem em jButton (que fique no jar)

5 respostas
R

Boas pessoal,

estou tentando adicionar uma imagem a um jButton, para isso usei o Visual Editor do Eclipse e busquei pelo caminho da imagem :

jButtonLimparOrigem.setIcon(new ImageIcon(getClass().getResource("/src/res/Bug.png")));

o diretorio “res” esta dentro do “src”, mas quando tento compilar o button lança NullPointerException (a imagem esta realmente lá)

Alguem sabe onde errei e como corrigir?

gostaria de saber também onde devo deixar as imagens para que não sejam perdidas na geração do .jar do projeto ?

Obrigado desde já.

5 Respostas

T

Opa, beleza.

Em qual diretorio está o seu formulário ?

Por exemplo se seu formulário estiver no caminho: src/form/cliente/entrada.java

você deve acessar a imagem da seguinte forma:

na de gerar o pacote é só adicionar a imagem no pacote.

C

-tente “/res/Bug.png” ao inves de “/src/res/Bug.png”
-verifique letra maiuscula e letra minuscula

R

Pessoal, obrigado pelas respostas, mas ainda não consegui.

Tentei os dois jeitos, o estranho é que se eu armazenar as imagens em um caminho do sistema “C:…” ele reconhece.

Mais alguma sugestão?

R

tb só consegui usando no c… olha meu site, no link java… poker e memoria… tem imagens zipadas…

o site ta na assinatura… www.raghyjose.net

ok coments.

C
Rafael T.:
Pessoal, obrigado pelas respostas, mas ainda não consegui.

Tentei os dois jeitos, o estranho é que se eu armazenar as imagens em um caminho do sistema "C:\.." ele reconhece.

Mais alguma sugestão?


sim, mais uma, insira getClassLoader
tente "new ImageIcon(getClass().getClassLoader().getResource("/res/Bug.png"))" ou "new ImageIcon(getClass().getClassLoader().getResource("src/res/Bug.png"))"

package p237447;

import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class Imagem {

    public Imagem() {}

    /**
     * Abre uma imagem num diretorio
     * c:/pasta/imagem.png ou c:\\pasta\\imagem.png
     * @param imagem
     * @return Image
     */
    public ImageIcon abrirImagemExterno(String imagem) {
        try {
            return new ImageIcon(ImageIO.read(new File(imagem)));
        } catch (IOException ex) {
            return null;//imagem n encontrada ou invalida
        }
    }

    /**
     * Abre uma imagem dentro do programa
     * pacote/imagem.png
     * se for src
     * imagem.png
     * @param imagem
     * @return Image
     */
    public ImageIcon abrirImagemLocal(String imagem) {
        try {
            return new ImageIcon(ImageIO.read(getClass().getClassLoader().getResource(imagem)));
        } catch (IOException ex) {
            return null;//imagem n encontrada ou invalida
        }
    }
    
}
Criado 4 de abril de 2011
Ultima resposta 6 de abr. de 2011
Respostas 5
Participantes 4