Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package sistemaVendas; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import javax.swing.JDesktopPane; import javax.swing.JInternalFrame; import javax.swing.JOptionPane; import org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; /** * * @author BRUNO */ public class CadastroProduto extends javax.swing.JInternalFrame { CadastroTipo cadastroTipoProduto; /** * Creates new form CadastroProduto */ JDesktopPane tela; public CadastroProduto(JDesktopPane telas) { tela = telas; initComponents(); int idAtual = idVerificador(); String id = String.valueOf(idAtual); txtIdProduto.setText(id); preencherComboBox(); } public void preencherComboBox() { File bancoTipos = new File(diretorio, "BDtipoProduto.xml"); try { SAXBuilder builder = new SAXBuilder(); doc = builder.build(bancoTipos); root = (Element) doc.getRootElement(); List<Element> tipos = root.getChildren(); for (int i = 0; i < tipos.size(); i++) { Element tipo = tipos.get(i); cbxTipoProduto.addItem(tipo.getText()); } } catch (JDOMException | IOException e) { } } public void atualizarComboBox() { cbxTipoProduto.removeAllItems(); preencherComboBox(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { lblIDProduto = new javax.swing.JLabel(); lblNomeProduto = new javax.swing.JLabel(); txtNomeProduto = new javax.swing.JTextField(); txtIdProduto = new javax.swing.JTextField(); lblTipoProduto = new javax.swing.JLabel(); lblQtdeEstoque = new javax.swing.JLabel(); lblPrecoUnitProduto = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); txtDescricao = new javax.swing.JTextArea(); txtQtdeEstoque = new javax.swing.JTextField(); ftxtPrecoUnitProduto = new javax.swing.JFormattedTextField(); btnCancelarProduto = new javax.swing.JButton(); btnOkProduto = new javax.swing.JButton(); cbxTipoProduto = new javax.swing.JComboBox(); btnCadastroTipoProduto = new javax.swing.JButton(); setClosable(true); setTitle("Cadastro de Produtos"); lblIDProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N lblIDProduto.setText("ID:"); lblNomeProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N lblNomeProduto.setText("Nome:"); txtNomeProduto.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N txtIdProduto.setHorizontalAlignment(javax.swing.JTextField.CENTER); txtIdProduto.setEnabled(false); lblTipoProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N lblTipoProduto.setText("Tipo do Produto:"); lblQtdeEstoque.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N lblQtdeEstoque.setText("Qtde Estoque:"); lblPrecoUnitProduto.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N lblPrecoUnitProduto.setText("Preo Unitrio:"); txtDescricao.setColumns(20); txtDescricao.setRows(5); txtDescricao.setBorder(javax.swing.BorderFactory.createTitledBorder("Descrio")); jScrollPane1.setViewportView(txtDescricao); txtQtdeEstoque.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N ftxtPrecoUnitProduto.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0.00")))); btnCancelarProduto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/cancel.png"))); // NOI18N btnCancelarProduto.setText("Cancelar"); btnCancelarProduto.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCancelarProdutoActionPerformed(evt); } }); btnOkProduto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/ok.png"))); // NOI18N btnOkProduto.setText("OK"); btnOkProduto.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnOkProdutoActionPerformed(evt); } }); btnCadastroTipoProduto.setText("Cadastrar Tipo do Produto"); btnCadastroTipoProduto.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnCadastroTipoProdutoActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGap(38, 38, 38) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addComponent(lblIDProduto) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(txtIdProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(layout .createSequentialGroup().addComponent(lblNomeProduto) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(txtNomeProduto).addContainerGap()) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 260, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap( javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(btnCadastroTipoProduto) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup().addComponent(btnOkProduto) .addGap(18, 18, 18).addComponent(btnCancelarProduto) .addGap(0, 0, Short.MAX_VALUE)))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(lblTipoProduto) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(cbxTipoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(lblQtdeEstoque) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtQtdeEstoque, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18).addComponent(lblPrecoUnitProduto) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(ftxtPrecoUnitProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE))))); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGap(69, 69, 69) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblIDProduto).addComponent(txtIdProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblNomeProduto).addComponent(txtNomeProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblTipoProduto).addComponent(lblQtdeEstoque) .addComponent(lblPrecoUnitProduto) .addComponent(txtQtdeEstoque, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ftxtPrecoUnitProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(cbxTipoProduto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(27, 27, 27).addComponent(btnCadastroTipoProduto).addGap(9, 9, 9) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnOkProduto).addComponent(btnCancelarProduto)) .addGap(23, 23, 23))); pack(); }// </editor-fold>//GEN-END:initComponents private void btnCancelarProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarProdutoActionPerformed this.dispose(); }//GEN-LAST:event_btnCancelarProdutoActionPerformed private void btnCadastroTipoProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCadastroTipoProdutoActionPerformed cadastroTipoProduto = new CadastroTipo(tela, this); tela.add(cadastroTipoProduto); cadastroTipoProduto.setVisible(true); }//GEN-LAST:event_btnCadastroTipoProdutoActionPerformed File diretorio = new File("Bancos de Dados"); File arquivo = new File(diretorio, "BancoProduto.xml"); Document doc; Element root; private void btnOkProdutoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkProdutoActionPerformed if (criarXml()) { JOptionPane.showMessageDialog(null, "DADOS SALVOS COM SUCESSO!", "Sucesso", JOptionPane.INFORMATION_MESSAGE); txtNomeProduto.setText(""); cbxTipoProduto.setSelectedIndex(0); txtQtdeEstoque.setText(""); ftxtPrecoUnitProduto.setText(""); txtDescricao.setText(""); int idAtual = idVerificador(); String id = String.valueOf(idAtual); txtIdProduto.setText(id); } else { JOptionPane.showMessageDialog(null, "ERRO NA GRAVAO DO ARQUIVO!", "ERRO", JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_btnOkProdutoActionPerformed public boolean criarXml() { String nome = txtNomeProduto.getText().toUpperCase(); String tipoProduto = (String) cbxTipoProduto.getSelectedItem(); String qtde = txtQtdeEstoque.getText(); String precoUnit = ftxtPrecoUnitProduto.getText(); String descricao = txtDescricao.getText(); int id = 1; if (!arquivo.exists()) { root = new Element("BancoProduto"); doc = new Document(root); } try { if (arquivo.exists()) { SAXBuilder builder = new SAXBuilder(); doc = builder.build(arquivo); root = (Element) doc.getRootElement(); id = idVerificador(); } } catch (IOException | JDOMException e) { return false; } Element produto = new Element("produto"); Attribute idd = new Attribute("id", "" + id); produto.setAttribute(idd); Element name = new Element("nome"); name.setText(nome); Attribute tipo = new Attribute("tipo", tipoProduto); name.setAttribute(tipo); Element descricaoXml = new Element("descrio"); descricaoXml.setText(descricao); Element precoUnitario = new Element("preoUnitrio"); precoUnitario.setText(precoUnit); Element qtdeXml = new Element("qtde"); qtdeXml.setText(qtde); produto.addContent(name); produto.addContent(descricaoXml); produto.addContent(precoUnitario); produto.addContent(qtdeXml); root.addContent(produto); try { XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat()); OutputStream out = new FileOutputStream(new File(diretorio, "BancoProduto.xml")); xout.output(doc, out); out.close(); } catch (IOException e) { return false; } return true; } private int idVerificador() { int idAtual = 0; Document aux; File diretorio = new File("Bancos de Dados"); File arquivo = new File(diretorio, "BancoProduto.xml"); SAXBuilder carrega = new SAXBuilder(); if (!(arquivo.exists())) { root = new Element("BancoProduto"); doc = new Document(root); return idAtual = 1; } try { aux = carrega.build(arquivo); Element rootaux = (Element) aux.getRootElement(); List<Element> produtos = rootaux.getChildren(); for (int i = 0; i < produtos.size(); i++) { Element produto = produtos.get(i); idAtual = Integer.parseInt(produto.getAttributeValue("id")); } } catch (JDOMException | IOException e) { } return idAtual + 1; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCadastroTipoProduto; private javax.swing.JButton btnCancelarProduto; private javax.swing.JButton btnOkProduto; private javax.swing.JComboBox cbxTipoProduto; private javax.swing.JFormattedTextField ftxtPrecoUnitProduto; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblIDProduto; private javax.swing.JLabel lblNomeProduto; private javax.swing.JLabel lblPrecoUnitProduto; private javax.swing.JLabel lblQtdeEstoque; private javax.swing.JLabel lblTipoProduto; private javax.swing.JTextArea txtDescricao; private javax.swing.JTextField txtIdProduto; private javax.swing.JTextField txtNomeProduto; private javax.swing.JTextField txtQtdeEstoque; // End of variables declaration//GEN-END:variables }