Advertisement
Guest User

Inserindo Labels dinamicamente - Thumbnails

a guest
Oct 13th, 2010
453
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.93 KB | None | 0 0
  1. import java.awt.Component;
  2. import java.awt.Graphics;
  3. import java.awt.event.MouseEvent;
  4. import java.awt.event.MouseListener;
  5. import java.io.File;
  6. import javax.swing.ImageIcon;
  7. import javax.swing.JFrame;
  8. import javax.swing.JLabel;
  9. import javax.swing.JOptionPane;
  10. import javax.swing.WindowConstants;
  11.  
  12.  
  13. public class LabelDinamico {
  14.    
  15.     public static void main(String[] args) {
  16.        
  17.         JFrame janela = new JFrame("Inserindo labels dinamicamente");
  18.         janela.setBounds(0,0,500,500);
  19.         janela.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  20.         janela.setLayout(null);
  21.        
  22.         // Diretório contendo as imagens
  23.         File diretorio = new File("C:\\imagens");  
  24.         File[] arquivos = diretorio.listFiles();
  25.        
  26.         // Posicionamento dos labels
  27.         int boundX = 10;       
  28.         int boundY = 10;
  29.  
  30.        
  31.         // Adicionando labels dinamicamente
  32.         for (int x = 0; x < arquivos.length; x++){
  33.            
  34.             // Declara uma imagem com o arquivo na posição do vetor
  35.             final ImageIcon imagem = new ImageIcon(((File)arquivos[x]).getAbsolutePath());
  36.            
  37.             // Declara o label
  38.             JLabel lbImagem = new JLabel()
  39.             // Esse bloco é para inserir a imagem
  40.             //e  esticar de acordo com o tamanho label
  41.             {
  42.                 public void paintComponent (Graphics g) {
  43.                 super.paintComponent (g);
  44.                     // Esses 5 sendo subtraídos é pra dar um espaço entre as imagens
  45.                     g.drawImage (imagem.getImage(), 0, 0, getWidth() - 5, getHeight() - 5, null);
  46.                 }
  47.             };
  48.  
  49.             // Posiciona a imagem
  50.             lbImagem.setBounds(boundX, boundY, 70, 70);
  51.            
  52.             // Seta o nome com o caminho da imagem
  53.             // Será usado depois para retornar o caminho quando clidado
  54.             lbImagem.setName(((File)arquivos[x]).getAbsolutePath());
  55.  
  56.             // Adiciona um listener
  57.             lbImagem.addMouseListener(new MouseListener() {
  58.                 public void mouseReleased(MouseEvent arg0) {}
  59.                 public void mousePressed(MouseEvent arg0) {}
  60.                 public void mouseExited(MouseEvent arg0) {}
  61.                 public void mouseEntered(MouseEvent arg0) {}
  62.                 public void mouseClicked(MouseEvent arg0) {
  63.                    
  64.                     // Pega o label que foi clicado
  65.                     JLabel lb = (JLabel) arg0.getSource();
  66.                     // Mosta o caminho da imagem clicada
  67.                     JOptionPane.showMessageDialog(null, "O caminho da imagem é " + lb.getName(), "Imagem", JOptionPane.INFORMATION_MESSAGE);
  68.                 }
  69.             });
  70.            
  71.             // Prepara a posição x do próximo label
  72.             boundX += 70;
  73.            
  74.             // Verifica se estourou o limite
  75.             if (boundX >= janela.getWidth() - 70)
  76.             {
  77.                 // Desce uma fila
  78.                 boundY += 70;
  79.                 boundX = 10;
  80.             }
  81.  
  82.             //Adiciona o label
  83.             janela.add(lbImagem);
  84.         }
  85.        
  86.         // Pegando todos os componentes
  87.         Component[] labels = new Component[janela.getContentPane().getComponents().length];
  88.         labels = janela.getContentPane().getComponents();
  89.        
  90.         for (int x = 0; x < labels.length; x++){
  91.             if (labels[x] instanceof JLabel)
  92.             {
  93.                 // Mostra todos os text dos labels
  94.                 System.out.println(((JLabel)labels[x]).getName());
  95.             }
  96.         }
  97.  
  98.         janela.setVisible(true);
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement