Imagem numa JLabel

3 respostas
S

[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);
}
}

3 Respostas

B

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:

V

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.

S

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!

Criado 12 de março de 2009
Ultima resposta 12 de mar. de 2009
Respostas 3
Participantes 3