Buscar

APOSTILA ENSINANDO FORMULÁRIO CRUD COM CAMPO FOTO

Prévia do material em texto

COMO COLOCAR IMAGEM EM UM FORMULÁRIO CRUD? ........................................................ 2 
LÓGICA: .................................................................................................................................... 2 
CÓDIGO DO BOTÃO PROCURAR ARQUIVO ............................................................................... 3 
FUNÇÕES NECESSÁRIAS PARA FUNCIONAR .............................................................................. 4 
CÓDIGO DO BOTÃO SALVAR ..................................................................................................... 6 
CÓDIGO DA GRADE JTABLE ....................................................................................................... 7 
 
COMO COLOCAR IMAGEM EM UM FORMULÁRIO CRUD? 
 
 
LÓGICA: 
Ao clicar no botão procurar, abrirá uma janela para procurar a foto. Após 
localizar a foto e escolher, ela será mostrada na área do painel com moldura. O 
atributo icon do JLabel (nome: jLabel2) mostrará a imagem. 
CÓDIGO DO BOTÃO PROCURAR ARQUIVO 
 JFileChooser fileChooser = new JFileChooser(); 
 fileChooser.setDialogTitle("Localizar imagem"); 
 int a = fileChooser.showOpenDialog(null); 
 if (a == 0) { 
 try { 
 String arquivo = fileChooser.getSelectedFile().getAbsolutePath(); 
 File f = new File(arquivo); 
 BufferedImage src = ImageIO.read(f); 
 BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(), 
BufferedImage.TYPE_INT_RGB); 
 Graphics2D g = dest.createGraphics(); 
 AffineTransform at = AffineTransform.getScaleInstance((double) src.getWidth() / 
src.getWidth(), (double) src.getHeight() / src.getHeight()); 
 g.drawRenderedImage(src, at); 
 //dest agora tem 460x367 pixels e com a imagem redimensionada. 
 ImageIcon icon = new javax.swing.ImageIcon(arquivo); 
 icon = new javax.swing.ImageIcon(dest); 
 jLabel2.setIcon(icon); 
 
 //System.out.println("Comprimento da imagem: " + icon.getIconWidth() + "\nAltura da 
imagem: " + icon.getIconHeight()); 
 } catch (IOException ex) { 
 Logger.getLogger(JFCandidatos.class.getName()).log(Level.SEVERE, null, ex); 
 } 
 
 } else { 
 } 
Após colar, se aparecer uma caixa de diálogo solicitando imports, pode 
importar. 
 
FUNÇÕES NECESSÁRIAS PARA FUNCIONAR 
 static Image iconToImage(Icon icon) { 
 if (icon instanceof ImageIcon) { 
 return ((ImageIcon) icon).getImage(); 
 } else { 
 int w = icon.getIconWidth(); 
 int h = icon.getIconHeight(); 
 GraphicsEnvironment ge 
 = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
 GraphicsDevice gd = ge.getDefaultScreenDevice(); 
 GraphicsConfiguration gc = gd.getDefaultConfiguration(); 
 BufferedImage image = gc.createCompatibleImage(w, h); 
 Graphics2D g = image.createGraphics(); 
 icon.paintIcon(null, g, 0, 0); 
 g.dispose(); 
 return image; 
 } 
 } 
 
 public byte[] imageToByte(Image image) { 
 
 BufferedImage bi = new BufferedImage(image.getWidth(null), image.getHeight(null), 
BufferedImage.TYPE_INT_RGB); 
 Graphics bg = bi.getGraphics(); 
 bg.drawImage(image, 0, 0, null); 
 bg.dispose(); 
 
 ByteArrayOutputStream buff = new ByteArrayOutputStream(); 
 try { 
 ImageIO.write(bi, "JPG", buff); 
 } catch (IOException e) { 
 e.printStackTrace(); 
 } 
 return buff.toByteArray(); 
 } 
 
Colar essas funções abaixo do “Generated Code” 
 
 
CÓDIGO DO BOTÃO SALVAR 
 Image i; 
 i = iconToImage(jLabel2.getIcon()); 
 candidatos1.setFoto(imageToByte(i)); 
 
Acrescentar essas 3 linhas no botão salvar, veja como ficará depois: 
 try { 
 Image i; 
 i = iconToImage(jLabel2.getIcon()); 
 candidatos1.setFoto(imageToByte(i)); 
 
 entityManager.getTransaction().commit(); 
 entityManager.getTransaction().begin(); 
 } catch (RollbackException rex) { 
 rex.printStackTrace(); 
 entityManager.getTransaction().begin(); 
 List<urnaeleitoral.Candidatos> merged = new 
ArrayList<urnaeleitoral.Candidatos>(list.size()); 
 for (urnaeleitoral.Candidatos c : list) { 
 merged.add(entityManager.merge(c)); 
 } 
 list.clear(); 
 list.addAll(merged); 
 } 
 
Suas alterações estão em destaque vermelho. 
No local de candidados1 você alterará para a sua entidade que controla o 
formulário. E no local de setFoto você apagar o trecho “Foto” e pressiona 
Ctrl+espaço para localizar o método correspondente ao seu. 
Abaixo a imagem de como ficará o botão salvar após adicionar os códigos. 
 
CÓDIGO DA GRADE JTABLE 
O código será adicionado no click da grade JTable. Clique com botão 
direito do mouse na grade >> eventos >> Mouse >> mouseClicked. Conforme 
imagem abaixo. 
 
 if (candidatos1.getFoto() != null) { 
 if (!candidatos1.getFoto().equals(null)) { 
 jLabel2.setIcon(new ImageIcon(candidatos1.getFoto())); 
 } 
 } else { 
 jLabel2.setIcon(null); 
 } 
 
Abaixo imagem de como vai ficar: 
 
Lembre-se de alterar o candidatos1 para a entidade que foi arrastada para seu 
formulário e também o “setFoto” para o seu método.

Continue navegando