Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 FUNÇÕES DE SUPORTE QUE SÃO UTEIS - JAVA ......................................................................... 3 ABRIR FORMULÁRIO EM MODAL ............................................................................................... 3 OBTER ID DO REGISTRO ATUAL SELECIONADO NO JTABLE ........................................................ 3 SELECIONAR UMA LINHA NO JTABLE APÓS ATUALIZAR .................................................................. 3 MENSAGEM DE CONFIRMAÇÃO EM JAVA ................................................................................. 3 MENSAGEM DE AVISO EM JAVA ................................................................................................ 3 OBTER DATA DE HOJE EM JAVA ................................................................................................. 3 REALIZAR FUNÇÃO SUM EM JPA .......................................................................................................... 4 CÓDIGO SAIR PARA AS TELAS CRUD ..................................................................................................... 4 CHAMAR FORMULÁRIO CRUD ............................................................................................................ 4 FORMATAR DATA EM JAVA ................................................................................................................ 4 CHAMAR FOMULÁRIO CADASTRO E ATUALIZAR A LISTA ............................................................................ 5 EXECUTA AO PRESSIONAR TECLA ENTER - KEYRELEASED ........................................................... 5 SELECT COM LIKE – BUSCA RECURSIVA ...................................................................................... 5 SELECT FILTRA POR CHAVE ESTRANGEIRA JCOMBOBOX ............................................................ 6 ABRIR TELA LOCALIZAR ARQUIVO .............................................................................................. 6 RECUPERAR IMAGEM OU FOTO DO BANCO ........................................................................................ 7 SALVAR ICONE DE JLABEL NO BANCO EM JPA ............................................................................ 7 FUNÇÕES QUE CONVERTEM IMAGEM ....................................................................................... 7 FUNÇÃO PARA ENVIAR E-MAIL .................................................................................................. 8 USAR A FUNÇÃO QUE ENVIA E-MAIL .......................................................................................... 8 ESTRUTURA DE REPETIÇÃO COM DB E CRUD EXEMPLO DE ARVORE (JTREE) ............................... 9 RECUPERAR CLIQUE NA ARVORE (JTREE) ............................................................................................. 10 FUNÇÕES DA ARVORE JTREE – EXPANDIR .................................................................................... 11 ABRIR FORMULÁRIO CRUD .............................................................................................................. 11 INSTANCIAR OBJETO DE UMA LISTA EM JPA ......................................................................................... 11 2 LANÇAR O FOCO DO CURSOR PARA UM CAMPO ................................................................................... 11 WHILE EM UMA LISTA JPA ............................................................................................................... 12 ABRIR FORMULÁRIO PRINCIPAL MAXIMIZADO ...................................................................................... 12 ERROS COMUNS JAVA COM JPA ............................................................................................. 14 ERRO 1: .................................................................................................................................... 14 CAUSA: ................................................................................................................................ 14 SOLUÇÃO: ............................................................................................................................ 14 ERRO 2: .................................................................................................................................... 14 CAUSA: ................................................................................................................................ 14 SOLUÇÃO: ............................................................................................................................ 15 ERRO 3: .................................................................................................................................... 15 CAUSA: ................................................................................................................................ 15 SOLUÇÃO: ............................................................................................................................ 15 ERRO 4: .................................................................................................................................... 15 CAUSA: ................................................................................................................................ 15 SOLUÇÃO: ............................................................................................................................ 16 ERRO 5: .................................................................................................................................... 16 CAUSA: ................................................................................................................................ 16 SOLUÇÃO: ............................................................................................................................ 16 SOLUÇÃO 2: ......................................................................................................................... 16 ERRO 6: .................................................................................................................................... 17 SOLUÇÃO: ............................................................................................................................ 17 ERRO 7: .................................................................................................................................... 17 CAUSA: ................................................................................................................................ 17 SOLUÇÃO: ............................................................................................................................ 17 3 FUNÇÕES DE SUPORTE QUE SÃO UTEIS - JAVA ABRIR FORMULÁRIO EM MODAL JDialog frame = new JDialog(); frame.setContentPane(new JFItemContrato()); frame.setTitle("Itens do projeto"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setModal(true); frame.setVisible(true); OBTER ID DO REGISTRO ATUAL SELECIONADO NO JTABLE int index = masterTable.getSelectedRow(); SELECIONAR UMA LINHA NO JTABLE APÓS ATUALIZAR int linha = masterTable.getSelectedRow(); java.util.Collection data = query.getResultList(); for (Object entity : data) { entityManager.refresh(entity); } list.clear(); list.addAll(data); masterTable.getSelectionModel().setSelectionInterval(linha, linha); MENSAGEM DE CONFIRMAÇÃO EM JAVA int opcao_escolhida = JOptionPane.showConfirmDialog(null,"Deseja realmente EXCLUIR O REGISTRO ?","Excluir Registro ",JOptionPane.YES_NO_OPTION);if (opcao_escolhida==JOptionPane.NO_OPTION) return; MENSAGEM DE AVISO EM JAVA JOptionPane.showMessageDialog(null,"Clique em uma Ata da Grade de Reuniões!", "Aviso!", JOptionPane.WARNING_MESSAGE ); return; OBTER DATA DE HOJE EM JAVA Calendar calendario = Calendar.getInstance(); projetos1.setDatCriacao(calendario.getTime()); 4 REALIZAR FUNÇÃO SUM EM JPA //Alterar a consulta da query do form, buscando a consulta ProjetoItens.getTotalPontoFuncao query1 = entityManager.createQuery("SELECT SUM(P.quantPontoFuncao) FROM ProjetoItens P WHERE P.codProjeto = :codProjeto"); //passar como parâmetro para a consulta query1.setParameter("codProjeto", projetos1); Long totalPF =(Long) query1.getSingleResult(); totalPFjFormattedTextField.setValue( totalPF ); CÓDIGO SAIR PARA AS TELAS CRUD Component comp = SwingUtilities.getRoot(this); ((Window) comp).dispose(); CHAMAR FORMULÁRIO CRUD try { final JFrame frame = new JFrame("Projetos"); frame.setContentPane(new JFProjetos()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n" + e, "ATENÇÃO", JOptionPane.WARNING_MESSAGE); } FORMATAR DATA EM JAVA //Obter data formatada SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy"); Date dataIni = fmt.parse(datInijFormattedTextField.getText()); 5 CHAMAR FOMULÁRIO CADASTRO E ATUALIZAR A LISTA //Chamar JFrame em ShowModal JDialog frame = new JDialog(); frame.setContentPane(new JFRevisoes()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.pack(); frame.setTitle("Revisões"); frame.setModal(true); frame.setLocationRelativeTo(null); frame.setVisible(true); java.util.Collection data = revisoesQuery.getResultList(); for (Object entity : data) { entityManager.refresh(entity); } revisoesList.clear(); revisoesList.addAll(data); EXECUTA AO PRESSIONAR TECLA ENTER - KEYRELEASED //Se tecla enter pressionada if (evt != null){ if (evt.getKeyCode() == KeyEvent.VK_ENTER) { //Obter quantidade de linha int quantLinha = masterTable.getRowCount(); //Tem resultado ? if (quantLinha > 0) { //Selecionar primeira linha masterTable.getSelectionModel().setSelectionInterval(0, 0); } } } SELECT COM LIKE – BUSCA RECURSIVA //Montar query com consulta pre-definida na classe Atualizacoes. query = entityManager.createQuery("SELECT a FROM Atualizacoes a WHERE a.titulo like :titulo"); //Enviar parametro exigido pela consulta pre-definida. query.setParameter("titulo", tituloBuscajTextField.getText().concat("%")); //Funcao que atualiza a lista java.util.Collection data = query.getResultList(); for (Object entity : data) { entityManager.refresh(entity); } list.clear(); list.addAll(data); 6 SELECT FILTRA POR CHAVE ESTRANGEIRA JCOMBOBOX //Montar query com consulta pre-definida na classe Atualizacoes. query = entityManager.createQuery("SELECT a FROM Atualizacoes a WHERE a.codRevisao = :codRevisao"); //Criar objeto da classe Atualizacoes Atualizacoes oAtualizacao = new Atualizacoes(); //Definir o campo codRevisao do objeto instancia da classe oAtualizacao.setCodRevisao((Revisoes) revisaojComboBoxBusca.getSelectedItem()); //Enviar parametro exigido pela consulta pre-definida. query.setParameter("codRevisao", oAtualizacao.getCodRevisao()); //Funcao que atualiza a lista Funcoes.getAtualizarQuery(entityManager, query, list); //Obter quantidade de linha int quantLinha = masterTable.getRowCount(); //Tem resultado ? if (quantLinha > 0) { //Selecionar primeira linha masterTable.getSelectionModel().setSelectionInterval(0, 0); } ABRIR TELA LOCALIZAR 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(new ImageIcon(new ImageIcon(dest).getImage().getScaledInstance(jLabel2.getWidth(), jLabel2.getHeight(), Image.SCALE_DEFAULT))); //System.out.println("Comprimento da imagem: " + icon.getIconWidth() + "\nAltura da imagem: " + icon.getIconHeight()); } catch (IOException ex) { Logger.getLogger(JFCliente.class.getName()).log(Level.SEVERE, null, ex); } } else { } 7 RECUPERAR IMAGEM OU FOTO DO BANCO if (candidaturas1.getCodCandidato().getFoto() != null) { if (!candidaturas1.getCodCandidato().getFoto().equals(null)) { jLabel2.setIcon(new ImageIcon(new ImageIcon(candidatos1.getFoto()).getImage().getScaledInstance(jLabel2.getWidth(), jLabel2.getHeight(), Image.SCALE_DEFAULT))); } } else { jLabel2.setIcon(null); } SALVAR ICONE DE JLABEL NO BANCO EM JPA Image i; i = iconToImage(jLabel1.getIcon()); clientes1.setFoto(imageToByte(i)); FUNÇÕES QUE CONVERTEM IMAGEM 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(); } 8 FUNÇÃO PARA ENVIAR E-MAIL public static void sendEmail( String remetente,String smtp, String usuarioSmtp, String senhaSmtp,String assunto, String para,String CC,String corpo ) throws MessagingException{ /* Função desenvolvida por Douglas Tybel */ java.util.Properties p = new java.util.Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", smtp); p.put("mail.smtp.port", "587"); final String user,pwd; user = usuarioSmtp; pwd = senhaSmtp; javax.mail.Authenticator auth = new javax.mail.Authenticator() { @Override public javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(user, pwd); } }; //Enviar email javax.mail.Session session = javax.mail.Session.getInstance(p, auth); javax.mail.internet.MimeMessage msg = new javax.mail.internet.MimeMessage(session); // "de" e "para" msg.setFrom(new javax.mail.internet.InternetAddress( remetente )); msg.setRecipient(javax.mail.Message.RecipientType.TO, new javax.mail.internet.InternetAddress(para)); if (CC.length() > 0) msg.setRecipient(javax.mail.Message.RecipientType.CC, new javax.mail.internet.InternetAddress( CC )); msg.setSentDate(new java.util.Date()); msg.setSubject( assunto ); msg.setText( corpo ); //Enviando mensagem (tentando) javax.mail.Transport.send(msg); JOptionPane.showMessageDialog(null, "Email Enviado com sucesso !! "); } USAR A FUNÇÃO QUE ENVIA E-MAIL try { Funcoes.sendEmail( remetentejTextField.getText() , smtpjTextField.getText() , usuariojTextField.getText() , senhajTextField.getText() , assuntojTextField.getText() , parajTextField.getText() , "" , corpojTextArea.getText() ); } catch (MessagingException ex) { Logger.getLogger(JFEnviarEmail.class.getName()).log(Level.SEVERE, null, ex); } 9 ESTRUTURA DE REPETIÇÃO COM DB E CRUD EXEMPLO DE ARVORE (JTREE) DefaultTreeModel modelTree = null; DefaultMutableTreeNode root = new DefaultMutableTreeNode("TOPICOS"); //Lista das reuniãoes (atas) Atas a = (Atas) jComboBox1.getSelectedItem(); topicosQuery = entityManager.createNamedQuery("Topicos.findByCodAta"); topicosQuery.setParameter("codAta", a.getCodAta()); java.util.Collection data = topicosQuery.getResultList(); topicosList.clear(); topicosList.addAll(data); //Adicionar cada topico e depois para cada um adicionar os históricos associados for (int u = 0; u < topicosList.size(); u++) { Topicos t = (Topicos) topicosList.get(u); DefaultMutableTreeNode topico = new DefaultMutableTreeNode(t.getTopico()); root.add(topico); //Consultar Históricos que estão dentro do topico historicosQuery = entityManager.createNamedQuery("Historicos.findByCodTopico"); historicosQuery.setParameter("codTopico", t.getCodTopico()); java.util.Collection dataH = historicosQuery.getResultList(); historicosList.clear(); historicosList.addAll(dataH); //Para cada topico, adicione os históricos for (int i = 0; i < historicosList.size(); i++) { Historicos h = (Historicos) historicosList.get(i); DefaultMutableTreeNode historico = new DefaultMutableTreeNode(h.getHistorico()); topico.add(historico); } } modelTree = new DefaultTreeModel(root); jTree1.setModel(modelTree); expandAll(jTree1); 10 RECUPERAR CLIQUE NA ARVORE (JTREE) DefaultMutableTreeNode no = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent(); if (no.getLevel() == 2) { //Consultar o histórico historicosQuery = entityManager.createQuery("SELECT h FROM Historicos h WHERE h.historico = :historico"); historicosQuery.setParameter("historico", no.toString() ); java.util.Collection dataH = historicosQuery.getResultList(); historicosList.clear(); historicosList.addAll(dataH); //Obter objeto historicos1 = (Historicos) historicosQuery.getSingleResult(); //Definir campos jTextArea1.setText( historicos1.getHistorico() ); //Id //JOptionPane.showMessageDialog(null, historicos1.getCodHistorico() ); }else if ( no.getLevel() == 1 ){ //Executar consulta topicosQuery = entityManager.createQuery("SELECT t FROM Topicos t WHERE t.topico = :topico"); topicosQuery.setParameter("topico", no.toString() ); //Atualizar a lista java.util.Collection dataA = topicosQuery.getResultList(); topicosList.clear(); topicosList.addAll(dataA); //Definir objetos topicos1 = (Topicos) topicosQuery.getSingleResult(); //Consultar o histórico historicosQuery = entityManager.createQuery("SELECT h FROM Historicos h WHERE h.codTopico = :codTopico"); historicosQuery.setParameter("codTopico", topicos1.getCodTopico() ); java.util.Collection dataH = historicosQuery.getResultList(); historicosList.clear(); historicosList.addAll(dataH); } 11 FUNÇÕES DA ARVORE JTREE – EXPANDIR //função para espandir a arvore public void expandAll(JTree tree) { TreeNode root = (TreeNode) tree.getModel().getRoot(); expandAll(tree, new TreePath(root)); } private void expandAll(JTree tree, TreePath parent) { TreeNode node = (TreeNode) parent.getLastPathComponent(); if (node.getChildCount() >= 0) { for (Enumeration e = node.children(); e.hasMoreElements();) { TreeNode n = (TreeNode) e.nextElement(); TreePath path = parent.pathByAddingChild(n); expandAll(tree, path); } } tree.expandPath(parent); // tree.collapsePath(parent); } ABRIR FORMULÁRIO CRUD JFrame frame = new JFrame("Lista de Membros"); frame.setContentPane(new JFAtaMembros()); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.pack();frame.setLocationRelativeTo(null); frame.setVisible(true); INSTANCIAR OBJETO DE UMA LISTA EM JPA candidaturas1 = candidaturasList1.get(0); LANÇAR O FOCO DO CURSOR PARA UM CAMPO numerojFormattedTextField.grabFocus(); 12 WHILE EM UMA LISTA JPA //Filtrar candidaturas por eleição. candidaturasQuery = entityManager.createQuery("SELECT c FROM Candidaturas c WHERE c.codEleicao = :codEleicao"); //Definir qual a eleição desejada Eleicoes e = new Eleicoes(); e.setCodEleicao(2); //Enviar parametro exigido pela consulta pre-definida. candidaturasQuery.setParameter("codEleicao", e ); //Funcao que atualiza a lista java.util.Collection data = candidaturasQuery.getResultList(); candidaturasList.clear(); candidaturasList.addAll(data); //Definir um ponteiro Iterator itr = candidaturasList.iterator(); while (itr.hasNext()) { Candidaturas c = (Candidaturas) itr.next(); System.out.println(c.getCodCargo().getCargo()); } ABRIR FORMULÁRIO PRINCIPAL MAXIMIZADO jFPrincipal formPrincipal = new jFPrincipal(); formPrincipal.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); formPrincipal.pack(); formPrincipal.setVisible(true); formPrincipal.setExtendedState(JFrame.MAXIMIZED_BOTH); Você precisa adicionar esse comando à função run. Comente a(s) linha(s) de código existente e cole o código acima abaixo. Considere alterar onde está jFPrincipal pelo nome do seu formulário principal. 13 14 ERROS COMUNS JAVA COM JPA ERRO 1: no suitable method found for add CAUSA: Os botões novo, salvar etc, foram copiados de um formulário CRUD JPA para outro form SOLUÇÃO: Ir em cada um dos botões acertando de acordo com a classe nova ou deletar e refazer ======================================================= ERRO 2: java.lang.ClassCastException: com.mysql.jdbc.JDBC4PreparedStatement cannot be cast to get.PreparedStatement CAUSA: Foi criado as classes: SQLException,PreparedStatement ao invés de importá-las Ao clicar no assistente de importação do IDE Netbeans (lampada) foi escolhida a opção "criar classe" 15 SOLUÇÃO: Na pacote do projeto, deve ter classes do tipo SQLException ou PrepareStatement, então exclua. Os importes serão solicitados novamente, clique em importar. Não clique em criar classe SQLException. ======================================================= ERRO 3: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) CAUSA: Usuário ou senha do mysql não estão corretos SOLUÇÃO: Na Unidade de persistência ou classe de conexão corrija o usuário ou senha para conectar ao mysql ======================================================= ERRO 4: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver No suitable driver found for jdbc:mysql CAUSA: Ausência dos drivers mysql nos libs(bibliotecas) do projeto 16 SOLUÇÃO: Na pasta library ou biblioteca do projeto, adicione o pacote do mysql ======================================================= ERRO 5: Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: No Persistence provider for EntityManager named ecomercialPU: CAUSA: Ao realizar @JoinColumn deve-se excluir o @Basic(optional = false) Erro acontece com JPA e CRUD, nada mais funciona(jframes) SOLUÇÃO: Existe algum: @Basic(optional = false) Em alguma classe e, campos com @ManyToOne,@JoinColumn não pode ter @Basic. SOLUÇÃO 2: Em ultimo caso: 1 - Remover da biblioteca a swing application framework 2 - Adicionar novamente 3 - Vassourar(compilar e limpar) 17 ======================================================= ERRO 6: cvc-complex-type.3.1: Value '2.0' of attribute 'version' of element 'persistence' is not valid with respect to the corresponding attribute use. Attribute 'version' has a fixed value of '1.0' SOLUÇÃO: 1 - Remover da biblioteca a Vinculação de Beans 2 - Recompilar - Vassourar(compilar e limpar) 3 - Obs(ele vai se auto adicionar, quando vc for até o designer do frame e entrar no codigo fonte) ======================================================= ERRO 7: org.jdesktop.beansbinding.Binding.convertReverse float Bind jformatedTextField no netbeans CAUSA: O value de um campo é preenchido antes mesmo da mascara, por isso o erro, já o text não. SOLUÇÃO: Vincule o text não o value. 18
Compartilhar