Como redimensionar imagem no JLabel(RESOLVIDO)

9 respostas
L

Pessoal, preciso de ajuda, fiz um programa onde o JFileChooser abri uma imagem dentro do JLabel, esta funcionado tudo bonitinho, mas o problema eh que quando abro a imagem ela abre no tamanho original, sendo assim, dependendo do tamanho da imagem fica aparecendo somente uma parte da imagem, consegui coloca-la no tamanho certo, mas preciso redimensionar a imagem manualmente antes de inserir no sistema.

meu codigo e esse abaixo:

JFileChooser fc = new JFileChooser();
        FileFilter ft = new FileFilter() {

            @Override
            public boolean accept(File f) {
                String file = f.getName();
               return file.endsWith(".jpg") | f.isDirectory();          
           }


            @Override
            public String getDescription() {
                return "jpg";
            }
        };

        fc.setFileFilter(ft);
        fc.showOpenDialog(null);
        File f = fc.getSelectedFile();
        Image image = null;
        try {
            image = ImageIO.read(f);
        } catch (IOException ex) {

            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        labFotoMembros.setIcon(new ImageIcon(image));

como posso fazer a imagem ser redimensionada dentro do JLabel, de forma automatizada?????

9 Respostas

L
T

Uma pergunta igual a sua foi feita dias atrás! Mas dá uma olhada nesse tópico e vê se te ajuda!
http://www.guj.com.br/posts/list/127809.java

L

thiago.correa:
Uma pergunta igual a sua foi feita dias atrás! Mas dá uma olhada nesse tópico e vê se te ajuda!
http://www.guj.com.br/posts/list/127809.java

Valew camarada, deu certo!!!

Acrescentei isso isso no meu codigo:

labFotoMembros.setIcon(new ImageIcon(image.getScaledInstance(labFotoMembros.getWidth(),labFotoMembros.getHeight(), Image.SCALE_DEFAULT)));
V

Mais fácil ainda seria substituir o label por um JImagePanel: http://www.guj.com.br/posts/list/56248.java#295271

S

Eu estou com o mesmo problema, e não consegui resolver…

dem uma olhada no meu codigo fonte:

JFileChooser arquivo = new JFileChooser();
        arquivo.setDialogTitle("Selecione a Foto");
        arquivo.setFileSelectionMode(JFileChooser.FILES_ONLY);
        File file = new File("user.dir");
        int option = arquivo.showOpenDialog(this);

        if(option == JFileChooser.APPROVE_OPTION) {
            file = arquivo.getSelectedFile();
            ImageIcon image = new ImageIcon(file.getPath());

            lblFoto.setIcon(new ImageIcon(image.getScaledInstance(lblFoto.getWidth(),lblFoto.getHeight(), Image.SCALE_DEFAULT))); 
            lblFoto.repaint();
        }
        else{
            JOptionPane.showMessageDialog(null,"Você não selecionou nenhum arquivo!", "Erro!", JOptionPane.ERROR_MESSAGE);
        }
V

Pq não tenta usar o JImagePanel sugerido?

S

Eu to usando o IDE Netbeans! tem como eu inserir um imagePanel no codigo fonte usando o netbens???

Obrigado!

V

Se eu não me engano, é só clicar no arquivo Java deve e move-lo para o local onde você quer que ele fique.

F
JFileChooser arquivo = new JFileChooser();  
       arquivo.setDialogTitle("Selecione a Foto");  
       arquivo.setFileSelectionMode(JFileChooser.FILES_ONLY);  
       File file = new File("user.dir");  
       int option = arquivo.showOpenDialog(this);  
  
       if(option == JFileChooser.APPROVE_OPTION) {  
           file = arquivo.getSelectedFile();  
           ImageIcon image = new ImageIcon(file.getPath());  
  
           lblFoto.setIcon(new ImageIcon(image.getScaledInstance(lblFoto.getWidth(),lblFoto.getHeight(), Image.SCALE_DEFAULT)));   
           lblFoto.repaint();  
       }  
       else{  
           JOptionPane.showMessageDialog(null,"Você não selecionou nenhum arquivo!", "Erro!", JOptionPane.ERROR_MESSAGE);  
       }

dentro do IF, remove tudo e coloca apenas essas duas linhas . . .

ImageIcon image = new ImageIcon(arquivo.getSelectedFile().getPath());  
lblFoto.setIcon(new ImageIcon(image.getImage().getScaledInstance(lblFoto.getWidth(),lblFoto.getHeight(), Image.SCALE_DEFAULT)));
Criado 25 de abril de 2010
Ultima resposta 17 de abr. de 2012
Respostas 9
Participantes 5