Ir ao conteúdo
  • Cadastre-se

Java Inserção de Imagens em JLabels


Posts recomendados

Olá a todos, antes de tudo, estou iniciando meus estudos em JAVA, e o problema que estou enfrentando é o seguinte:
Quero abrir uma imagem do diretório do meu .jar, o arquivo já está no local certo, então só faltaria carrega-lo no código.

Porém, a imagem não carrega, alguém sabe me dizer o porque?

 

package Main;

import java.awt.Image;
import javax.swing.*;

public class Menu extends JFrame {

	public static void main(String[] args) {
		new Menu();
		JFrame janela = new JFrame();
		janela.setSize(816, 419);
		janela.setUndecorated(true);
		janela.setVisible(true);
		janela.setLocationRelativeTo(null);
		
		JLabel logo = new JLabel();
		logo.setIcon(new javax.swing.ImageIcon(Menu.class.getResource("/Main/LiturrgisLogoLoad.png")));
	}

}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Continua a mesma coisa, aquele erro que citei acontece mesmo sem compilar.

adicionado 16 minutos depois

Okay, dei uma pesquisada, modifiquei algumas coisas, agora estou tendo erro na compilação, acho que deve ser mais fácil de arrumar, erro:


Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at Main.Menu.<init>(Menu.java:10)
    at Main.Menu.main(Menu.java:16)

 

Código:
 

package Main;

import java.awt.Image;
import javax.swing.*;

public class Menu extends JFrame {
	
	public Menu()
	{
		ImageIcon imagem = new ImageIcon(getClass().getResource("/LiturgisGame/IMGFiles/LiturrgisLogoLoad.png"));
		JLabel logo = new JLabel();
		logo.setIcon(imagem);
	}

	public static void main(String[] args) {
		new Menu();
		JFrame janela = new JFrame();
		janela.setSize(816, 419);
		janela.setUndecorated(true);
		janela.setVisible(true);
		janela.setLocationRelativeTo(null);
	}

}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Parece que ele não está encontrando o arquivo, talvez seja por isso que ele não está contando a inicialização, olhe:
https://imgur.com/pnrbkyi

Já tentei alterar o caminho da pasta, mas não vai.

 

 

adicionado 7 minutos depois

Fiz alguns testes, e isso acontece ao instanciar a classe, quando retiro o "new Menu();" o programa compila, porém, ainda sem carregar a IMG.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Cara, um exemplo que eu fiz aqui funcionou.

package code;

import javax.swing.*;
import java.net.URL;

public class IconLabelTest {
    public static void main(String[] args) {
        JLabel label = new JLabel();
        label.setText("Ícone");
        label.setIconTextGap(10);

        URL url = IconLabelTest.class.getResource("/code/Fire.jpg");
        label.setIcon(new ImageIcon(url));

        JFrame frame = new JFrame();
        frame.setTitle("Ícone");
        frame.setSize(800, 600);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);

        frame.add(label);
    }
}
Estrutura do meu projeto

              src
               |   
             code
               |
   *-----------------------*     
   |                       |
Fire.jpg            IconLabelTest.java

Verifica se o caminho da sua imagem está correto.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Eu peguei de um projeto meu de quando estava aprendendo a biblioteca swing, aqui está funcionando normalmente.

 

package labels;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class LabelImagem extends JFrame /*transforma essa classe em uma janela*/ {
	
	public LabelImagem() {
		super("Imagem em label"); //chama o construtor de JFrame e adiciona um título na janela
		ImageIcon icon = new ImageIcon(getClass().getResource("fotos/holo_foto.png")); //define a imagem
		JLabel imagem = new JLabel(); //cria a label
		imagem.setIcon(icon); //coloca a imagem na label
		
		getContentPane().add(imagem); //adiciona a label no container da janela
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //operação de fechamento
      
		setSize(300, 300); 
        //tamanho da janela, 300x300 (nesse caso é o mesmo tamanho da foto que eu estou usando, mas pode ser diferente também)
		
        	setResizable(false); //impede de redimensionar a janela
		setVisible(true); //deixa a janela visível
	}
	
	public static void main(String[] args) {
		new LabelImagem(); //chama o construtor da minha classe e abre a janela
	}
	
}

 

Fotos:

    - Estrutura do projeto: http://prntscr.com/mvxzgb

    - Foto da janela: http://prntscr.com/mvy0da

 

Só mais uma coisa. Se você está iniciando seus estudos em Java, eu recomendo que utilize as interfaces gráficas mais para o final, depois de ver Serialização, pacote nio, herança. Pelo visto você já sabe de herança pois estou vendo o 'extends'. Enfim, recomendo estudar outras coisas antes de janelas mas é apenas uma recomendação minha, estude da maneira que for melhor para você.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!