Inserindo Imagem

23 respostas
malves_info

Salve Salve galera!!! estou com um probleminha em inserir imagem na JLabel + JPanel. Segue o fonte:

jLabelLogo = new JLabel(new ImageIcon("img/minhaImg.jpg"));
			jLabelLogo.setBounds(new java.awt.Rectangle(11,35,162,121));
			jLabelLogo.setText("JLabel");
			jPanelLogo = new JPanel();
			jPanelLogo.setLayout(new BorderLayout());
			jPanelLogo.setBounds(new java.awt.Rectangle(1,-1,181,219));
			jPanelLogo.add(jLabelLogo, BorderLayout.CENTER);

Faço estes procedimentos mas a imagem não aparece :frowning: … o que pode ser???

Agradeço desde já a atenção!!!

[]'s

23 Respostas

criador

Isso funcionou no container de uma janela que fiz…acredito que funcione também no JPanel.

//
// Cria o Desktop Pane.
//
io_desktop		=	new JDesktopPane()
{
	//
	// Define a imagem.
	//
	Image
	image		= 	(
					new ImageIcon(RLLIcon.class.getResource("RLLAgência.jpg"))
				).getImage();
				
	public
	void			paintComponent
				(
					Graphics		graphic
				)
	{
		//
		// Define a posição da imagem na janela.
		//
		graphic.drawImage(image,-120,-100,this);
	}
};
		
//
// Define layout da janela.
//
io_desktop.setLayout(null);
io_desktop.setSize(1500000, 1500000);
io_desktop.setBackground(Color.LIGHT_GRAY);

Tenta aí…

lina

Oi,

O código acima funciona, porém você pode utilizar isso:

jLabelLogo = new JLabel(new ImageIcon(<suaclasse>.class.getResource("minhaImg.jpg"))); jLabelLogo.setBounds(new java.awt.Rectangle(11,35,162,121)); jLabelLogo.setText("JLabel"); jPanelLogo = new JPanel(); jPanelLogo.setLayout(new BorderLayout()); jPanelLogo.setBounds(new java.awt.Rectangle(1,-1,181,219)); jPanelLogo.add(jLabelLogo, BorderLayout.CENTER);

O problema foi o argumento passado ao executar o new ImageIcon.

Tchauzin!

malves_info

Deu error!!!

IWAV0052E Invocation Target Exception creating project.gui.About
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.eclipse.ve.internal.java.vce.launcher.remotevm.JFCLauncher.launch(JFCLauncher.java:56)
	at org.eclipse.ve.internal.java.vce.launcher.remotevm.JavaBeansLauncher.main(JavaBeansLauncher.java:77)
Caused by: java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at zord.gui.About.getJPanelLogo(About.java:56)
	at zord.gui.About.getJContentPane(About.java:44)
	at zord.gui.About.initialize(About.java:31)
	at zord.gui.About.<init>(About.java:21)
	... 6 more

Alteração feita:

...
jLabelLogo = new JLabel(new ImageIcon(About.class.getResource("img/minhaIMG.jpg")));
...

:frowning:

criador

Só passa o nome da imagem

O About.class.getResource pega o package onde está sua imagem.
Se estiver no mesmo pacote da sua classe é só fazer isso que mostrei ai em cima…
Testa assim primeiro.
Se der erro poste aqui…
Abraço!

lina

Oi,

a String utilizada: “img/minhaIMG.jpg” não é mais necessária. retire o img/ da frente, ficando: “minhaIMG.jpg”

Tchauzin!

lina

Olhe a exceção:

Caused by: java.lang.NullPointerException at javax.swing.ImageIcon.<init>(Unknown Source) at zord.gui.About.getJPanelLogo(About.java:56) at zord.gui.About.getJContentPane(About.java:44) at zord.gui.About.initialize(About.java:31) at zord.gui.About.<init>(About.java:21) ... 6 more

Provavelmente, ele não conseguiu achar a imagem! de um Refresh no seu pacote!

Tchauzin!

malves_info

Mesmo erro… :frowning: … Tem certeza que não precisa colocar o diretório da imagem: “img/” ???

criador

Não precisa não…
Mas tens que colocar a imagem no mesmo pacote desta classe.
O getResource pega o caminho do pacote onde está sua classe!

lina

Oi,

é o seguinte,
no meu teste aqui, eu criei uma classe chamada Teste e ela estava dentro do pacote estudos.

A minha imagem estava dentro deste pacote. então só utilizei a linha como te informei acima.

Marky.Vasconcelos

Onde ta esse diretorio?

é dentro da pasta source do seu projeto?

se o diretorio for /img/

tenta isso pra ver se ta pegando o arquivo

File file = new File(About.class.getClassLoader().getResource("img/minhaIMG.jpg").toURI());

boolean isNull = file == null;
if(isNull)
System.out.println("Arquivo nulo");
else
System.out.println(file.exists());
Leandro_Vecchi

Quando eu quero colocar uma image em um label eu faço assim:

dataHoraLabel = new JLabel(); dataHoraLabel.setIcon(SwingResourceManager.getIcon(Principal.class, "/Img/icone2.gif")); dataHoraLabel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); dataHoraLabel.setBounds(0, 2, 788, 14); panel_1.add(dataHoraLabel); dataHoraLabel.setVisible(true);

Eu coloco o caminho completo, nesse caso a imagem está dentro de uma pasta no projeto.

Leandro_Vecchi

tenta isso e posta aqui se der certo :smiley:

malves_info

O diretório da “img” esta dentro do mesmo pacote da classe About que é “gui”.
Leandro Vecchi SwingResourceManager não consigo encontrar aqui.

Marky.Vasconcelos

Tentou?

File file = new File(About.class.getResource("img/minhaIMG.jpg").toURI());

boolean isNull = file == null;
if(isNull)
System.out.println("Arquivo nulo");
else
System.out.println(file.exists());
malves_info

Tentei e da o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at zord.gui.About.getJPanelLogo(About.java:68)
	at zord.gui.About.getJContentPane(About.java:46)
	at zord.gui.About.initialize(About.java:33)
	at zord.gui.About.<init>(About.java:23)
	at zord.gui.MainTray$3.actionPerformed(MainTray.java:92)
	at java.awt.MenuItem.processActionEvent(Unknown Source)
	at java.awt.MenuItem.processEvent(Unknown Source)
	at java.awt.MenuComponent.dispatchEventImpl(Unknown Source)
	at java.awt.MenuComponent.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Leandro_Vecchi

ixi, para fazer isso eu usei uma ferramenta, de criação de interface, chamada Window Builder… com ela é facil colcoar icone, imagens , etc. tenta tirar aquele nome la.

malves_info

Se eu tirar o nome não adianta neh? sem objeto == sem referência == sem método :wink:

lina

Bom,

é quase de certeza que falta dar um refresh no pacote onde fica a imagem!

:cry:

malves_info

Linda lina se eu der mais Refresh no meu project vou quebrar meu F5 kkkkkkkk… brincadeira isso já fiz. MASSS resolvi meu POBREma… Segue a solução:

//Declarei
...
private final Image imgLogo = Toolkit.getDefaultToolkit().getImage(About.class.getResource("img/minhaIMG.jpg"));

//Informei!
jLabelLogo = new JLabel(new ImageIcon(imgLogo));
....

E Resolveuu!!! Obrigado a todosss pela ajuda!!! :wink: Lina esta de parabéns vi uns posts seus aqui no forum … e saca bem de java…

[]'s

Leandro_Vecchi

eita hehe que bom que resolveu…
vc não usa nada para ajudar a criar interfaces?
algo como o window builder?

Marky.Vasconcelos

Agora que conseguiu carregar a imagem aprenda a colocar em um componente sobreescrevendo o método paintComponent(Graphics g) do componente.

Mantau

Só para ajudar, para que seja mais fácil para referenciar imagens de projetos, é melhor criar um package
somente para imagens.
como por exempo:

package imagens.icones;

dentro deste pacote, crie uma classe vazia, esta, servirá de referencia para suas imagens

package imagens.icones;

public class Referencia{

}

assim, fica facil utilizar imagens em sua aplicacao.

quando quser referenciar alguma imagem faca por exempo o seguinte:

URL url =  imagens.Referencia.class.getResource("minhaImg.jpg");

se foi útil…

J

Isso resolve também:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;

public class PanelImage extends JPanel {

    private static final long serialVersionUID = 1L;
    Image imagem;
    String centralizar = null;

    public PanelImage(String URL, String centralizar) {
        imagem = Toolkit.getDefaultToolkit().getImage(getClass().getResource(URL));

        if(centralizar.equals("s")){
            this.centralizar = centralizar;
        }else if(centralizar.equals("n")){
            this.centralizar = centralizar;
        }else{
            this.centralizar = "n";
        }
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (imagem != null) {

            Dimension dimension = this.getSize();
            int x = (int) (dimension.getWidth() - imagem.getWidth(this)) / 2;
            int y = (int) (dimension.getHeight() - imagem.getHeight(this)) / 2;

            if (this.centralizar.equals("n")) {
                g.drawImage(imagem, x, y, imagem.getWidth(this), imagem.getHeight(this), this);
            } else if (this.centralizar.equals("s")) {
                g.drawImage(imagem, 0, 0, this.getWidth(), this.getHeight(), this);
            }
        } else {
            g.drawString("Imagem não encontrada para fundo do sistema.", 50, 50);
        }
    }
}
Criado 22 de dezembro de 2008
Ultima resposta 1 de set. de 2010
Respostas 23
Participantes 7