Problema com abertura de imagem com jfilechooser e jpanel

2 respostas
T

Pessoal,
alguém pode me ajudar, pois estou com esse código abaixo…e estou selecionando a imgem através do JFileChooser e exibindo no Jlabel, porém não está aparecendo nada…
/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package Img;

import java.awt.<em>;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import java.net.URL;

import javax.imageio.ImageIO;

import javax.swing.</em>;

import java.awt.image.BufferedImage;

/**
*

  • @author Theu
    */
    public class SelArq extends JFrame{

    JMenuItem carImg;
    
    JMenuItem sair;
    
    JLabel mostraImg;
    
    File imagem;
    
    BufferedImage buffer;
    
    JPanel painelImg;
    

    public SelArq() {

    super("Diagnóstico Terapêutico");
     
     getContentPane().setLayout(new BorderLayout());
     
     painelImg = new JPanel();
     painelImg.setLayout(new BorderLayout());
     
     mostraImg = new JLabel(new ImageIcon("imagem.jpg"));
     //mostraImg.setBounds(10, 10, 5, 5);
     painelImg.add(mostraImg, BorderLayout.CENTER);
     //painelImg.add(mostraImg);
     
     JMenuBar barraMenu = new JMenuBar();
     
     JMenu menuArquivos = new JMenu("Arquivos");
     menuArquivos.setMnemonic('A');
     
     carImg = new JMenuItem("Carregar Imagem");
     carImg.setMnemonic('C');
     menuArquivos.add(carImg);  
     
     sair = new JMenuItem("Sair do Programa");
     sair.setMnemonic('S'); 
     menuArquivos.add(sair);
     
     barraMenu.add(menuArquivos);
     
     setJMenuBar(barraMenu);
     
     
     getContentPane().add(painelImg);
     //setBackground(Color.CYAN);
     
     geraEvento handler = new geraEvento();
     carImg.addActionListener(handler);
     sair.addActionListener(handler);
    

    }

    public class geraEvento implements ActionListener{

    public void actionPerformed(ActionEvent evento) {
         
         if(evento.getSource() == carImg) {
             
             imagem = getFileChooser();
             
             try {
                 buffer = ImageIO.read(new File(imagem.getAbsolutePath()));
                 URL url = new URL("file://"+imagem.getAbsolutePath());
                 Icon img = new ImageIcon(url);
                 mostraImg.setIcon(img);
             
             } catch (Exception exception) {
                 System.out.println(evento);
             }
    
         }
         else if(evento.getSource() == sair) {
             System.exit(1);
         }
     }
    

    }

    public File getFileChooser() {

    JFileChooser fileChooser = new JFileChooser();
     File fileName = null;
     
     int result = fileChooser.showOpenDialog(null);
    
     fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
     fileName = fileChooser.getSelectedFile();
    
     if ((fileName == null) || (fileName.getName().equals(""))) {
         JOptionPane.showMessageDialog(null, "Arquivo Inválido !", "Erro", JOptionPane.ERROR_MESSAGE);
    
     }
    
     return fileName;
    

    }
    }

2 Respostas

C

POW AMIGO ESTOU COM O MESMO ERRO!!!

ViniGodoy

Estava olhando esse seu código.

Primeiro de tudo, não ignore exceções, como vc fez aqui:
try { 
   buffer = ImageIO.read(new File(imagem.getAbsolutePath())); 
   URL url = new URL("file://"+imagem.getAbsolutePath()); 
   Icon img = new ImageIcon(url); 
   mostraImg.setIcon(img); 

} catch (Exception exception) { 
   System.out.println(evento); //Exceção sendo ignorada
}

Senão, se um erro ocorrer, você não vai ficar sabendo. No lugar, loga essa exceção e exibe uma mensagem de erro.

2. O construtor do ImageIcon pode recebr uma iamgem diretamente como parâmetro. Então, faça isso:
try { 
   buffer = ImageIO.read(new File(imagem.getAbsolutePath())); 
   Icon img = new ImageIcon(buffer); 
   mostraImg.setIcon(img); 

} catch (Exception exception) { 
   exception.printStackTrace(); //Imprima o erro, no mínimo!
   JOptionPane.showMessageDialog(this, "&lt;html&gt;Erro ao abrir imagem: <br>" + e.getMessage());
}
Criado 20 de setembro de 2008
Ultima resposta 24 de set. de 2008
Respostas 2
Participantes 3