Inserção de imagem em jLabel[RESOLVIDO]

4 respostas
vanessa.tenorio

Boa tarde, pessoal!!

Então, eu criei um projeto muito simples, no qual quero inserir uma imagem em um jLabel, porém apresenta-me a seguinte mensagem de erro: uma variável não-estática não pode ser referenciada em um contexto estático. Como posso corrigir este erro?

public class IndicadorDiario {
      
    ImageIcon imagem = new ImageIcon(getClass().getResource("/Arquivo.png"));
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        
         Indicador indicador = new Indicador();
         indicador.setVisible(true);
                
           indicador.jLabelPrimeiroLugarParabensLED.setIcon(imagem); //erro apresentado nesta linha
   }
}

Grata a todos!

4 Respostas

E

O problema não é a imagem em si, mas o fato de você estar usando uma variável membro dentro de uma função estática. No seu caso, você pode resolver o seu problema simplesmente assim:

public class IndicadorDiario {  
            
          
        /** 
         * @param args the command line arguments 
         */  
        public static void main(String[] args) throws Exception {  
              
             Indicador indicador = new Indicador();  
             indicador.setVisible(true);  
             ImageIcon imagem = new ImageIcon(getClass().getResource("/Arquivo.png"));  
                      
               indicadorVendasDiario.jLabelPrimeiroLugarParabensLED.setIcon(imagem);
       }  
    }
vanessa.tenorio
entanglement:
O problema não é a imagem em si, mas o fato de você estar usando uma variável membro dentro de uma função estática. No seu caso, você pode resolver o seu problema simplesmente assim:
public class IndicadorDiario {  
            
          
        /** 
         * @param args the command line arguments 
         */  
        public static void main(String[] args) throws Exception {  
              
             Indicador indicador = new Indicador();  
             indicador.setVisible(true);  
             ImageIcon imagem = new ImageIcon(getClass().getResource("/Arquivo.png"));  
                      
               indicador.jLabelPrimeiroLugarParabensLED.setIcon(imagem);
       }  
    }
Muito Obrigada, entanglement... porém agora o erro passou para esta linha abaixo, afirmando que o método getClass() não pode ser referenciada em um contexto estático.
ImageIcon imagem = new ImageIcon(getClass().getResource("/Arquivo.png"));
Mesmo assim, muito obrigada!!!
E

Ah, desculpe. Nesse caso, você vai ter de trocar “getClass()” por “IndicadorDiario.class”.

De modo geral, é esse o preço que você paga por escrever muita coisa dentro do “main” - tipicamente, o “main” de uma classe X deveria apenas instanciar um objeto da classe X, e chamar um método, passando (quem sabe) alguns parâmetros.

Eu normalmente faria algo como:

public class IndicadorDiario {    
       /** OK, "processar" não é o melhor nome para um método, por favor escolha um nome melhor */                  
       public void processar() throws Exception {
             Indicador indicador = new Indicador();    
             indicador.setVisible(true);    
             ImageIcon imagem = new ImageIcon(getClass().getResource("/Arquivo.png"));    
                        
               indicador.jLabelPrimeiroLugarParabensLED.setIcon(imagem);  
       }            
        /**  
         * @param args the command line arguments  
         */    
        public static void main(String[] args) throws Exception {    
                IndicadorDiario  id = new IndicadorDiario ();
                id.processar();
       }    
    }
vanessa.tenorio
entanglement:
Ah, desculpe. Nesse caso, você vai ter de trocar "getClass()" por "IndicadorDiario.class".

De modo geral, é esse o preço que você paga por escrever muita coisa dentro do "main" - tipicamente, o "main" de uma classe X deveria apenas instanciar um objeto da classe X, e chamar um método, passando (quem sabe) alguns parâmetros.

Eu normalmente faria algo como:
public class IndicadorDiario {    
       /** OK, "processar" não é o melhor nome para um método, por favor escolha um nome melhor */                  
       public void processar() throws Exception {
             Indicador indicador = new Indicador();    
             indicador.setVisible(true);    
             ImageIcon imagem = new ImageIcon(getClass().getResource("/Arquivo.png"));    
                        
               indicador.jLabelPrimeiroLugarParabensLED.setIcon(imagem);  
       }            
        /**  
         * @param args the command line arguments  
         */    
        public static void main(String[] args) throws Exception {    
                IndicadorDiario  id = new IndicadorDiario ();
                id.processar();
       }    
    }
Bom dia! entanglement, utilizando sua preciosa ajuda, resolvi meu problema do seguinte modo: dentro da classe Indicador, eu criei o método processar:
public void processar() {   

             ImageIcon imagem = new ImageIcon(getClass().getResource("/imagens/LED_Verde_Ligado.png"));       
                           
            jLabelPrimeiroLugarParabens.setIcon(imagem);     
       }
Então, fiz a chamada deste método na classe IndicadorDiario:
public class IndicadorDiario {    
             Indicador indicador = new Indicador();    
             indicador.setVisible(true);    
                                   
              indicador.processar(); 
       }
Valeu mesmo!!! :D
Criado 13 de julho de 2012
Ultima resposta 16 de jul. de 2012
Respostas 4
Participantes 2