Inserir imagem atraves de JLabel

15 respostas
L

Pessoal,

Estou iniciando no java e não estou conseguindo inserir uma imagem utilizando um JLabel, abaixo o meu codigo:

public viewLogin(){
		   ImageIcon logo = new ImageIcon(this.getClass().getResource("imagem//logo.jpg"));  
}
private JPanel getJContentPaneLogin() {
		if (jContentPaneLogin == null) {
			jLabelLogo = new JLabel(logo);
			jLabelLogo.setBounds(new Rectangle(6, 8, 106, 112));
             }
}

Quando tento complicar ele me apresenta este erro:

Exception in thread “main” java.lang.NullPointerException

at javax.swing.ImageIcon.(Unknown Source)

at projeto.sde.usuario.viewLogin.(viewLogin.java:41)

at projeto.sde.executa.sdeExecuta.main(sdeExecuta.java:23)

Pelo que pesquisei, deveria dar certo, inclusive a minha imagem está dentro de uma pasta imagem e dentro do diretório src.
Alguém poderia me dizer o que pode está acontecendo ?

Obrigado

15 Respostas

ViniGodoy

Tente assim:

L

Amigo, testei e deu o mesmo erro, alguma outra dica ?

Obrigado

L

será que alguém pode me ajudar ???

obrigado

L

Pessoal,

Resolvi o problema tirando a imagem do método construtor e inserido direto no objeto JLabel

obrigado

ViniGodoy

Pq vc está usando duas barras // no lugar de uma só?

Só é necessário fazer escape para a outra barra \

Outra coisa. O caminho é relativo ao seu classpath. Você não deveria estar colocando “src” nele a menos que isso faça parte de um nome de pacote. Verifique se seu classpath está apontando para o lugar certo, nas suas configurações de projeto.

wanderley.drumond

Estou com um problema com isso também. Eu uso o NetBeans e quando mando executar o programa por ele dá certo, mas quando mando gerar o .jar e o executo a imagem não aparece.

Para inserir a imagem no JLabel eu fiz isso:

Alguém poderia me dar uma ajuda?

ViniGodoy

E o caminho do user.dir está certo? A imagem está lá? Pq esse seu comando não busca dentro do .jar

Eric_Yuzo

Está sobrando barras aí.

Aliás, você pode colocar a imagem no seu projeto e chamá-lo assim:

l_background.setIcon(new javax.swing.ImageIcon(getClass.getResource("/nomeDoPacote/Tela.jpg"));Desta forma sua imagem fica dentro do seu jar e não obriga o usuário a manter a imagem em seu diretório pessoal.

wanderley.drumond

Ae Vini

O caminho está certo sim (CiaDaPiscina\Telas)tanto é que consigo fazer a imagem aparecer quando executo pelo NetBeans, só não consigo quando executo o .jar mesmo.

Eric:

Cada barra tem quer ser feita por duas, assim: “//Telas//Tela.jpg”, se for assim: “/Telas/Tela.jpg” a imagem não aparece.

e deu erro nesse código:

cannot find symbol
variable: getClass
location: ciadapiscina.Dados_Pessoais

ou seja ele está pensando que getClass é uma variavel.

E se eu colocar a imagem dentro do .jar. Como deveria ficar a minha referência?

Eric_Yuzo

wanderley.drumond:
ou seja ele está pensando que getClass é uma variavel.

E se eu colocar a imagem dentro do .jar. Como deveria ficar a minha referência?


Foi mal, erro meu. Esqueci dos parênteses, sem eles o compilador pensa mesmo que é variável.

l_background.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nomeDoPacote/Tela.jpg"));Esta já é a forma de carregar a imagem de um pacote dentro do seu jar.

wanderley.drumond

Cara foi mal mas continua dando erro. Dessa vez foi erro de execução.

<blockquote>Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

at javax.swing.ImageIcon.<init>(ImageIcon.java:167)

at ciadapiscina.Dados_Pessoais.initComponents(Dados_Pessoais.java:228)

at ciadapiscina.Dados_Pessoais.<init>(Dados_Pessoais.java:57)

at ciadapiscina.Dados_Pessoais$12.run(Dados_Pessoais.java:454)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)</blockquote>

A propósito, o correto seria isso:

E tentei isso também:

sem sucesso.

Agora eu nem sei o que está acontecedo.

Eric_Yuzo

A String passada para o método getResource deve conter um caminho válido, se não ocorre um NullPointerException.

wanderley.drumond

Valeu irmão, sucesso total!!

Muito obrigado!

M

Direcionado ao ViniGodoy

estou iniciando no mundo java, utilizo o netbeans… um exexricio q o professo pediu para pesquisae é como inseri uma imagem na Jlabel, estou vendo muito artico mais nao esta claro vc pode ajudar-me a enteder ?

grato desde já

D

Colocando em um button javaFX

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;


public class NewFXMain extends Application {


    public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(Stage primaryStage) {
  
        
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.TOP_LEFT);
        grid.setPadding(new Insets(0, 0, 0, 25));
       
        Scene scene = new Scene(grid, 530, 500);
        primaryStage.setScene(scene);  
        
        
        Image image1 = new Image("D:/java/imagem.png", 249, 146, false, false);
        Button button5 = new Button();
        button5.setGraphic(new ImageView(image1));
        button5.setMaxSize(300,100);
        button5.setTranslateX(0);
        button5.setTranslateY(300);
        grid.add(button5,0,0);
        
      primaryStage.show();

    }

    private Object getAppletContext() {
        throw new UnsupportedOperationException("Not yet implemented");
    }
}
Criado 1 de maio de 2009
Ultima resposta 11 de ago. de 2012
Respostas 15
Participantes 6