Imagem numa JLabel

[b]Bom, eu fiz uma aplicação Desktop em JAVA, e nesta aplicação eu coloquei uma imagem… mas qdo eu compilo o programa ele não mostra a imagem… a não ser que a imagem esteja na mesma pasta que o arquivo jar… e a imagem está DENTRO do arquivo jar tbm… porem é como se não estivesse.

concluindo:
eu coloquei a imagem no arquivo .jar mas:
se existe a tal imagem na mesma pasta que o arquivo .jar
o programa mostra a imagem
se (por exemplo) o programa ta na desktop e a imagem ta em C:\Documents and Settings\All Users\Favoritos… ou qlqr outra pasta
o programa não mostra a imagem…

Alguem pode me ajudar com isso???

Desde já agradeço!

PS: aqui vai o código do meu programa… por via das dúvidas (só pra constar, eu uso o Eclipse IDE)

package funcoes;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

/*Esta Classe monta toda a Interface Gráfica da Aplicação com o cliente.

  • Aqui você não encontrará nada funcional, somente o código das janelas,
  • botões e suas funções. A parte do método Newton-Raphson em si é
  • encontrada na Classe negocio!
    */

public class funcao extends JFrame {
//Declaração dos Componentes
[color=red]ImageIcon logo = new ImageIcon(“newton.jpg”);
JLabel logotipo = new JLabel(logo);[/color]
JLabel grauEquacao = new JLabel(“Digite o Grau da Equação:”);
JPanel painel = new JPanel();
JTextArea grau = new JTextArea("", 1, 2);
JButton okn = new JButton(“Ok”);
JPanel painel2 = new JPanel();
negocio funcao = new negocio();
JLabel funcaom = new JLabel();
JButton corrigir = new JButton(“Corrigir a Função!”);
JButton okRaiz = new JButton(“Ok, Obter o Zero da função!”);
JButton derivada = new JButton(“Mostrar a Derivada desta função!”);
JButton Graf = new JButton(“Ok, Mostre-me o gráfico da função!”);

//construtor da classe
public funcao() {
	super("MÉTODO DE NEWTON - RAPHSON");
	inicio();
	}
//fim do construtor.


//método chamado dentro do construtor da Classe. Este método "monta" toda a interface!
public void inicio(){
	GridLayout grid = new GridLayout(2, 1);
	getContentPane().setLayout(grid);
	grauEquacao.setFont(new java.awt.Font("Comic Sans MS", 1, 25)); 
	grauEquacao.setForeground(new Color(200, 200,255));
	funcaom.setFont(new java.awt.Font("Comic Sans MS", 1, 15)); 
	funcaom.setForeground(new Color(200, 200,255));	
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setResizable(false);
	setBounds(new java.awt.Rectangle( 250, 225, 800, 600));
	painel.setBackground(Color.BLACK);
	painel.add(logotipo);
	painel.add(grauEquacao);
	painel.add(grau);		
	okn.addActionListener(new ActionListener(){
		public void actionPerformed( ActionEvent evento ){
			String ene = grau.getText();
			int n = Integer.parseInt(ene.trim());
			funcao.montaFuncao(n);
			funcaom.setText(funcao.funcaom);
			painel2.add(corrigir);
			painel2.add(okRaiz);
			painel2.add(derivada);
			painel2.add(Graf);
			funcao.count = 1;			
		}
	}
			);
	painel.add(okn);
	getContentPane().add(painel);
	
	corrigir.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
			String ene = grau.getText();
			int n = Integer.parseInt(ene.trim());
			funcao.montaFuncao(n);
			funcaom.setText(funcao.funcaom);
			funcao.count = 1;	
		}
	});
	
	okRaiz.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
			String ene = grau.getText();
			int n = Integer.parseInt(ene.trim());
			funcao.raiz(n);
		}
	});
	
	derivada.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
			String ene = grau.getText();
			int n = Integer.parseInt(ene.trim());
			funcao.mostrag(n, funcao.a);
		}
	});
	
	Graf.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent event){
			String ene = grau.getText();
			int n = Integer.parseInt(ene.trim());
			
			grafico panel = new grafico(funcao, n);
			JFrame Grafico = new JFrame("                 Grafico da função:  " + funcao.function + "           Resolucão 800x800                         By: Sheldon Led!");
			panel.setBackground(Color.white);
			Grafico.add( panel );
			Grafico.setBounds(250, 20, 800,800);
			Grafico.setVisible( true );
			Grafico.setResizable(false);
		}
	});
	
	painel2.add(funcaom);
	painel2.setBackground(Color.BLACK);
	getContentPane().add(painel2);		
}
// Fim do método "monta" toda a interface!

//Método principal. Este método é que inicia todo o programa
public static void main (String[] Args){
	funcao primeira = new funcao();
	primeira.setVisible(true);
}
}

Ola,

Boim dia,

Faz o seguinte, tente:
1-> Coloque a imagem na raiz do seu codigo, no eclipse isto quer dizer: %SEU_PROJETO%/src/
2-> Para carregar a imagem tente usar o getResource… ImageIcon(this.getClass().getResource("/newton.jpg"));
quando vc fizer o jar, abra-o, num zip da vida, e verifique se a imagem fica logo no raiz do jar… dae funciona certim.

Ps.: sem querer ser o chato… mas quando for postar o codigo, use a tag [code],e poxa… posta só a parte interessante… vlw. :wink:

Só fique atento ao detalhe que arquivos dentro do .jar são tratados de maneira case sentitive, enquanto arquivos no Windows não.

Ou seja, para o .jar newton.jpg e NEWTON.JPG são coisas diferentes.

Muito Obrigado [color=darkblue] BrunoCarlo[/color], a linha de código que vc citou encaixou como uma luva no meu código e agora ta rodando belezinha… tipo… era como se antes o programa não achasse a imagem dentro do jar… mas com o getResource os problemas foram “Asolucionados”!

[color=red]**[/color] me desculpa por não colocar a tag [ code ] é pq sou meio novo aqui no GUJ… não sei utilizar bem os recursos do fórum… mas valeu por essa dica tbm…

agora meu código (somente a parte principal) ficou assim:

ImageIcon logo = new ImageIcon(this.getClass().getResource("/newton.JPG")); JLabel logotipo = new JLabel(logo);

Mais uma vez, Obrigado!