Estava eu tentando inserir uma imagem em um Jbutton, funcionou tudo legal, entretando, só funciona se eu por o caminho completo para a imagem, por mais que ela esteja no local da aplicação.
Gostaria de saber, o que devo fazer, para não depender do caminho completo, apenas pondo o nome da imagem!
Funciona assim:
Icon inserir = new ImageIcon("/root/Desktop/SISTEMA CPADI/TELAS/Cadastros/mais.gif");
B_ins=new JButton("Inserir",inserir);
Assim, não:
Icon inserir = new ImageIcon("mais.gif"); //considere que o mais.gif está no diretório da classe em questão
B_ins=new JButton("Inserir",inserir);
Fala Marck, blz? Acho que seu exemplo não iria mudar mto coisa, uma vez que eu poderia distribuir a app. daria um pouco de trabalho, ficar mudando toda hora, não acha? mas mto obrigado pela atenção.
thingol, sua dica parece interessante, mas, desculpe minha ignorancia, como eu poderia usar este metodo? Qual o tipo de variavel iria instanciar o que tu me passou? Muito obrigado. Abraços
Marck
ow, foi mals :oops:
nao interpretei a pergunta…
T
thingol
peerless:
Fala Marck, blz? Acho que seu exemplo não iria mudar mto coisa, uma vez que eu poderia distribuir a app. daria um pouco de trabalho, ficar mudando toda hora, não acha? mas mto obrigado pela atenção.
thingol, sua dica parece interessante, mas, desculpe minha ignorancia, como eu poderia usar este metodo? Qual o tipo de variavel iria instanciar o que tu me passou? Muito obrigado. Abraços
Tá bom, vamos lá (acho que não fui claro):
Icon inserir = new ImageIcon(getClass().getClassLoader().getResource (“mais.gif”)); // aplicação Web
Icon inserir = new ImageIcon(getClass().getResource (“mais.gif”)); // aplicação Swing
peerless
Opa, então você foi claro o suficiente para mim fazer isso, e me deparar com o seguinte erro:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at TCadastro.<init>(TCadastro.java:147)
at TCadastro.main(TCadastro.java:414)
Java Result: 1
T
thingol
Se ele não achar no lugar correto, getResource() retorna null. Você precisaria alterar sua referência para a imagem (é por isso que eu costumo usar “/resources/images/blablabla.gif” em vez de pô-la relativa à classe.)
ViniGodoy
E tome cuidado com um detalhe.
O getResource() pode ser case sensitive.
Por exemplo, se você tem a imagem imagem.jpg, fazer getClass().getResource("/Imagem.jpg") vai funcionar no Windows, mas não funcionará no Linux e nem num jar.
Então, via de regra, fique atento às letras maiúsculas e minúsculas quando informar o nome de seu arquivo.
T
thingol
Uma vez eu tive problemas com um trainee - ele editava a imagem no Paint da Microsoft, e esse programa tem a mania de deixar a extensão dos arquivos em maiúsculas.
Quando o programa rodava sob a IDE, os arquivos de imagem estavam no CLASSPATH (explodidos), e não havia problemas. Só que quando ele montava o JAR, o tal arquivo não era encontrado dentro do JAR, e a aplicação dava problemas.
Até ele entender isso foi um parto. O problema é que ele era pouco cuidadoso e nunca renomeava o arquivo depois de editá-lo com o Paint; aí o erro sempre e sempre se repetia.
peerless
Infelizmente, não funcionou, tentei diversos diretórios, inclusive o completo.
Bom, obrigado de qualquer forma. Se alguem tiver outra solução, agradeço