Mudar o tamanho de icone de um jLabel em execução

2 respostas
D

Pessoal, estou com programa q adiciona a um jPanel vários jLabel com uma imagem em cada jLabel, agora estou precisando modificar o tamanho da imagem q eu inseri em casa jLabel. Eu consigo extrair o ícone do jLabel mas ñ estou conseguindo manipular e retornar para o ícone de novo… esta ai o código…

int cont=jPanel1.getComponentCount();
        for(int e=0; e<cont; e++){

            
            Icon icone = new ImageIcon(jPanel1.getComponent(e).getName());
            //jPanel1.getComponent(e).getName() é a forma q eu estou passando
            // o caminho da Imagem, ate aqui ta tranquilo, pois esta gerando
            // o icone com a imagem q tinha no painel
            
             BufferedImage fundo = null;
             try {
                 fundo = ImageIO.read(new File(jPanel1.getComponent(e).getName()));
             }   
             catch (IOException e1) {
                 fundo = new BufferedImage(1,1,BufferedImage.BITMASK );
             }


             // o erro é disparado na proxima linha de codigo
             /*Exception in thread "AWT-EventQueue-0" 
             java.lang.ClassCastException: sun.awt.image.ToolkitImage cannot 
                     be cast to javax.swing.Icon*/
             icone=(Icon) fundo.getScaledInstance(jPanel1.getComponent(e).getWidth(),
                     jPanel1.getComponent(e).getHeight(), 10000);

//            icone.paintIcon((Component) icone, null, e, e);
            JLabel jLabel = new JLabel();
            jLabel.setIcon(icone);
            
            jLabel.setBorder(javax.swing.BorderFactory.createLineBorder(Color.WHITE));
            jLabel.addMouseListener(new java.awt.event.MouseAdapter() {
 @Override
                    public void mouseClicked(java.awt.event.MouseEvent evt) {
                        jLabelMouseClicked(evt);
                    }
             });
            jPanel1.add(jLabel);



        }

        jPanel1.validate();

2 Respostas

ViniGodoy

Troque seus JLabels por JImagePanels:
http://www.guj.com.br/posts/list/56248.java#295271

Ele já faz isso automaticamente.

D

blz ViniGodoy, mas ñ deu aqui ainda, o codigo q eu implementei ñ esta adicionando nada ao jPanel principal. Ta ai o codigo

JImagePanel novo = null;   
                            try {   
                                novo = new JImagePanel(aux);  // aux é uma String contendo o caminho   
                                novo.setFillType(JImagePanel.FillType.RESIZE);   
                                novo.setSize(100, 100);   
                                novo.setImage(aux);   
                            }   
  
                            catch (IOException ex) {   
                                Logger.getLogger(Interface_TrView.class.getName()).log(Level.SEVERE, null, ex);   
                            }   
                                                         
                             jPanel1.add(novo);   
                             jPanel1.repaint();   
                             jPanel1.validate();   
                             JOptionPane.showMessageDialog(null, novo);   
                            // aqui nesse JOptionPane mostra a imagem q eu quero, só q no painel principal ñ mostra nada,   
                            // e ainda por cima no metodo jPanel1.getComponentCount() que é o metodo q retorna   
                            //a quantidade de componentres do painel ta retornando zero

postei tambem essa mensagem no outro topico la. Tem algum problema tambem de postar em dois topicos??..
valeu

Criado 9 de agosto de 2010
Ultima resposta 9 de ago. de 2010
Respostas 2
Participantes 2