Como alterar um valor na celula jtable

4 respostas
java7java-se
M

Como alterar um valor na celula jtable?

package br.com.visual;

import br.com.classes.Item_compra;

import br.com.classes.Produtos;

import br.com.classes.UsuarioLogado;

import br.com.classes.Venda;

import br.com.conexao.ConnectionFactory;

import br.com.dao.ClientesDAO;

import br.com.dao.Item_compraDAO;

import br.com.dao.ProdutoDAO;

import br.com.dao.UsuarioDAO;

import br.com.dao.VendaDAO;

import com.mxrck.autocompleter.TextAutoCompleter;

import java.awt.Frame;

import java.awt.event.KeyEvent;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

import javax.swing.ListSelectionModel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.table.DefaultTableModel;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import org.codehaus.groovy.tools.shell.Main;

/**
*

  • @author Renan
    */
    public class CadastroVendas extends javax.swing.JInternalFrame {

    /**

    • Creates new form CadastroVendas
      */
      int id_venda;
      DefaultTableModel tmItem_compra = new DefaultTableModel(null, new String[] {“Produto”, “Quantidade”, “Preço unitário”, “Subtotal”});
      ListSelectionModel lsmItem_compra;
      List<Item_compra> itens_compra;
      float desconto = 0;
      float valor_total = 0;
      float total_geral = 0;
      float subtotal = 0;
      NumberFormat formatarFloat= new DecimalFormat(“0.00”);
      public CadastroVendas() {
      initComponents();
      try {
      jtData.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####")));
      } catch (ParseException ex) {
      Logger.getLogger(CadastroVendas.class.getName()).log(Level.SEVERE, null, ex);
      }
      autoCompleteProdutos();
      autoCompleteClientes();
      jlNomeFuncionario.setText(UsuarioLogado.getInstance().getNome());
      novaVenda();
      jlLinhaSelecionada.setVisible(false);
      jlProdutoExcluir.setVisible(false);
      btDeletar.setVisible(false);
      jlTotal.setText(Float.toString(valor_total));
      jlValorDesconto.setText(Float.toString(desconto));
      jlTotalGeral.setText(Float.toString(total_geral));
      jtValor_recebido.setText(“0”);

    }

    public void autoCompleteProdutos(){
    TextAutoCompleter textAutoAcompleter = new TextAutoCompleter( jtNomeProduto);

    PreparedStatement pstm;
     ResultSet rs;
     ConnectionFactory bd = new ConnectionFactory();
     Connection conn = null;
    
     try{
         pstm = ConnectionFactory.getConexao().prepareStatement("select id, nome from produto");
         rs = pstm.executeQuery();
         while (rs.next()) {
             textAutoAcompleter.addItem(rs.getString("nome"));
    
         }
     } catch(Exception de) {
         JOptionPane.showMessageDialog(this, de.getMessage());
     }
    

    }

    public void autoCompleteClientes(){
    TextAutoCompleter textAutoAcompleter = new TextAutoCompleter( jtId_cliente);

    PreparedStatement pstm;
     ResultSet rs;
     ConnectionFactory bd = new ConnectionFactory();
     Connection conn = null;
    
     try{
         pstm = ConnectionFactory.getConexao().prepareStatement("select id, nome from clientes");
         rs = pstm.executeQuery();
         while (rs.next()) {
             textAutoAcompleter.addItem(rs.getString("nome"));
    
         }
     } catch(Exception de) {
         JOptionPane.showMessageDialog(this, de.getMessage());
     }
    

    }

    public void novaVenda(){
    
    VendaDAO vendaDAO = new VendaDAO();
    
    Venda venda = new Venda();
    
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
     Date data = new Date();
     String datahoje = format.format(data);
     jtData.setText(datahoje);
     
     data = null;  
     try {
         data = new SimpleDateFormat("dd/MM/yyyy").parse(jtData.getText());
     } catch (ParseException ex) {
         Logger.getLogger(CadastroVendas.class.getName()).log(Level.SEVERE, null, ex);
     }
     String dataBanco = new SimpleDateFormat("yyyy-MM-dd").format(data);  
     
     SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
     Date data_atual = new Date();
     String data_inc = formatador.format(data_atual);
     
     UsuarioDAO usuarioDAO = new UsuarioDAO();
     
     venda.setId_usuario(usuarioDAO.buscaIdUsuario(jlNomeFuncionario.getText()));
     venda.setId_cliente(0);
     venda.setData(dataBanco);
     venda.setData_inc(data_inc);
     venda.setDesconto(0);
     venda.setTotal(0);
     venda.setPagamento("");
     id_venda = vendaDAO.cadastrarVenda(venda);
     jlId.setText(Integer.toString(id_venda));
    

    }

    jScrollPane1.setPreferredSize(new java.awt.Dimension(45, 45));
    
     tbItem_compra.setModel(tmItem_compra);
     lsmItem_compra = tbItem_compra.getSelectionModel();
     lsmItem_compra.addListSelectionListener(new ListSelectionListener() {
         public void valueChanged(ListSelectionEvent e) {
             if (! e.getValueIsAdjusting()) {
                 tbItem_compraLinhaSelecionada();
             }
         }
     });
    
    private void btAdicionarProdutoNomeActionPerformed(java.awt.event.ActionEvent evt) {
    
    CadastrarPorNome();
    
    jtNomeProduto.setText("");
    
    }
    
    private void btDeletarActionPerformed(java.awt.event.ActionEvent evt) {
    
    excluirItem_compra();
    
    }
    
    private void btCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
    
    updateVenda();
    
    }
    
    private void jtNomeProdutoKeyPressed(java.awt.event.KeyEvent evt) {
    
    if(evt.getKeyCode() == KeyEvent.VK_ENTER){
    
    CadastrarPorNome();
    
    jtNomeProduto.selectAll();
    
    }
    
    }
    
    private void jtCod_barrasKeyPressed(java.awt.event.KeyEvent evt) {
    
    if(evt.getKeyCode() == KeyEvent.VK_ENTER){
    
    CadastrarPorCodigo();
    
    }
    
    }
    
    private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {
    
    cancelarVenda();
    
    }
    
    private void jtDescontoKeyReleased(java.awt.event.KeyEvent evt) {
    
    desconto();
    
    }
    
    public void cancelarVenda(){
    
    String id_venda = jlId.getText();
    
    VendaDAO vendaDAO = new VendaDAO();
    
    vendaDAO.cancelarVenda(Integer.parseInt(id_venda));
    
    int resposta = JOptionPane.showConfirmDialog(this, Venda cancelada com sucesso! Deseja iniciar uma nova venda?, Confirmação, JOptionPane.YES_NO_OPTION);
    
    if(resposta == JOptionPane.YES_NO_OPTION){
    
    tmItem_compra = (DefaultTableModel)tbItem_compra.getModel();
    
    tmItem_compra.setNumRows(0);
    
    jtId_cliente.setText("");
    
    jtValor_recebido.setText("");
    
    jtNomeProduto.setText("");
    
    jtValor_recebido.setText(0);
    
    jlTotal.setText(0);
    
    jlValorDesconto.setText(0);
    
    jlTotalGeral.setText(0);
    
    jcPagamento.setSelectedItem(Dinheiro);
    
    novaVenda();
    
    }else{
    
    dispose();
    
    }
    

    }

    public void updateVenda(){
    
    VendaDAO vendaDAO = new VendaDAO();
    
    Venda venda = new Venda();
    
    Date altera_data = null;
     Date data = null;
     Date data_inc = null;
     try {
         altera_data = new SimpleDateFormat("dd/MM/yyyy").parse(jtData.getText());
     } catch (ParseException ex) {
         Logger.getLogger(CadastroVendas.class.getName()).log(Level.SEVERE, null, ex);
     }
     String dataBanco_altera = new SimpleDateFormat("yyyy-MM-dd").format(altera_data);
    
     SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     Date data_atual = new Date();
     String data_inclusao = formatador.format(data_atual);
     if(jtDesconto.getText().equals("")){
         float desconto = 0;
     }
     
     UsuarioDAO usuarioDAO = new UsuarioDAO();
     ClientesDAO clientesDAO = new ClientesDAO();
     
     venda.setId_usuario(usuarioDAO.buscaIdUsuario(jlNomeFuncionario.getText()));
     venda.setId_cliente(clientesDAO.buscaIdCliente(jtId_cliente.getText()));
     venda.setData(dataBanco_altera);
     venda.setData_inc(data_inclusao);
     venda.setDesconto(desconto);
     venda.setTotal(Float.parseFloat(jlTotalGeral.getText().replace(",", ".")));
     venda.setPagamento(jcPagamento.getSelectedItem().toString());
     
     venda.setId(Integer.parseInt(jlId.getText()));
     if(jtValor_recebido.getText().equals("")){
         jtValor_recebido.setText("0");
     }
     float valor_recebido = Float.parseFloat(jtValor_recebido.getText().replace(",", "."));
     float troco = 0;
     troco = valor_recebido - total_geral;
     
     if(valor_recebido != 0){
         JOptionPane.showMessageDialog(this, "Troco R$: "+troco);
     }
     
     vendaDAO.alterarCadastro(venda);
     
     if(jrSim.isSelected()){
         String relat = "./src/br/com/relatorios/relatorioVendaAtual.jasper";
         HashMap parametros = new HashMap();
         Connection conn = ConnectionFactory.getConexao();
         parametros.put("id", id_venda);
         JasperPrint impressao = null;
         try {
             impressao = JasperFillManager.fillReport(relat, parametros, conn);
         } catch (JRException ex) {
             Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
         }
         JasperViewer viewer = new JasperViewer(impressao, false);
         viewer.setExtendedState(Frame.MAXIMIZED_BOTH);
         viewer.setVisible(true);
     }
     
     int resposta = JOptionPane.showConfirmDialog(this, "Venda finalizada com sucesso! Deseja iniciar uma nova venda?", "Confirmação", JOptionPane.YES_NO_OPTION);
     if(resposta == JOptionPane.YES_NO_OPTION){
         tmItem_compra = (DefaultTableModel)tbItem_compra.getModel();
         tmItem_compra.setNumRows(0);
         jtId_cliente.setText("");
         jtValor_recebido.setText("0");
         jtValor_recebido.setText("");
         jtNomeProduto.setText("");
         jcPagamento.setSelectedItem("Dinheiro");
         jlTotal.setText("0");
         jlValorDesconto.setText("0");
         jlTotalGeral.setText("0");
         jtDesconto.setText("0");
         novaVenda();
     }else{
         dispose();
     }
    

    }

    public void CadastrarPorNome(){
    
    Item_compraDAO item_compraDAO = new Item_compraDAO();
    
    Item_compra item_compra = new Item_compra();
    
    if(jtNomeProduto.getText().equals("")){
         JOptionPane.showMessageDialog(this, "Preencha o campo nome.");
         jtNomeProduto.requestFocus();
     }else{
         String id_venda = jlId.getText();
         item_compra.setId_venda(Integer.parseInt(id_venda));
         item_compra.setQtdade(Integer.parseInt(jtQtdade.getText()));
         
         String nome_produto = jtNomeProduto.getText();
         
         ProdutoDAO produtoDAO = new ProdutoDAO();
         int id_produto = produtoDAO.buscaIdProduto(nome_produto);
         item_compra.setId_produto(id_produto);
         int qtdadejt = Integer.parseInt(jtQtdade.getText());
         item_compraDAO.cadastrarItem_compra(item_compra, qtdadejt);
         
         listar();
     }
    

    }

    public void CadastrarPorCodigo(){
    
    Item_compraDAO item_compraDAO = new Item_compraDAO();
    
    Item_compra item_compra = new Item_compra();
    
    if(jtCod_barras.getText().equals("")){
         JOptionPane.showMessageDialog(this, "Preencha o código de barras.");
         jtCod_barras.requestFocus();
     }else{
         String id_venda = jlId.getText();
         item_compra.setId_venda(Integer.parseInt(id_venda));
         item_compra.setQtdade(Integer.parseInt(jtQtdade.getText()));
         
         String codigo_barras = jtCod_barras.getText();
         jtCod_barras.setText("");
         ProdutoDAO produtoDAO = new ProdutoDAO();
         int id_produto = produtoDAO.buscaIdProdutoCod(codigo_barras);
         item_compra.setId_produto(id_produto);
         int qtdadejt = Integer.parseInt(jtQtdade.getText());
         item_compraDAO.cadastrarItem_compra(item_compra, qtdadejt);
         
         listar();
     }
    

    }

    public void listar(){
    
    String id_venda = jlId.getText();
    
    Item_compraDAO item_compraDAO = new Item_compraDAO();
    
    itens_compra = item_compraDAO.listarItem_compra(id_venda);
    
    mostrarItem_compra(itens_compra);
    
    }
    
    public void mostrarItem_compra(List<Item_compra> itens_compra){
    
    while (tmItem_compra.getRowCount() > 0){
    
    tmItem_compra.removeRow(0);
    
    }
    
    if(itens_compra.size() == 0){
    
    jlTotal.setText(0.0);
    
    jlTotalGeral.setText(0.0);
    
    jlValorDesconto.setText(0.0);
    
    <a href="//jtDesconto.setText">//jtDesconto.setText</a>(“0”);
    
    }else{
    
    String [] campos = new String [] {null, null, null, null, null};
    
    valor_total = 0;
    
    for (int i = 0; i < itens_compra.size(); i++){
    
    tmItem_compra.addRow(campos);
    
    //tmItem_compra.setValueAt(itens_compra.get(i).getId_produto(), i, 0);
    
    ProdutoDAO produtoDAO = new ProdutoDAO();
    
    String[] vetor = produtoDAO.buscaProdutoPorId(itens_compra.get(i).getId_produto());
    
    String nome = vetor[0];
    
    Float valor_unitario = Float.parseFloat(vetor[1]);
    
    tmItem_compra.setValueAt(nome, i, 0);
             tmItem_compra.setValueAt(itens_compra.get(i).getQtdade(), i, 1);
             tmItem_compra.setValueAt(formatarFloat.format(valor_unitario), i, 2);
             
             int qtdade = itens_compra.get(i).getQtdade();
             
             subtotal = valor_unitario * qtdade;
             tmItem_compra.setValueAt(formatarFloat.format(subtotal), i, 3);
    
             valor_total = subtotal + valor_total;
             
             total_geral = valor_total - desconto;
             jlTotal.setText(formatarFloat.format(valor_total));
             jlTotalGeral.setText(formatarFloat.format(total_geral));
         }
     }
    

    }

    public void desconto(){
    
    total_geral = Float.parseFloat(jlTotalGeral.getText().replace(",", .));
    
    valor_total = Float.parseFloat(jlTotal.getText().replace(",", .));
    
    desconto = Float.parseFloat(jtDesconto.getText().replace(",", .));
    
    total_geral = valor_total - (valor_total * desconto)/100;
    
    jlValorDesconto.setText(formatarFloat.format(desconto));
     jlTotalGeral.setText(formatarFloat.format(total_geral));
    

    }

    private void tbItem_compraLinhaSelecionada(){

    if (tbItem_compra.getSelectedRow() != -1){
         jlLinhaSelecionada.setVisible(true);
         jlProdutoExcluir.setVisible(true);
         btDeletar.setVisible(true);
         ProdutoDAO produtoDAO = new ProdutoDAO();
         String[] vetor = produtoDAO.buscaProdutoPorId(itens_compra.get(tbItem_compra.getSelectedRow()).getId_produto());
         String nome = vetor[0];
         jlProdutoExcluir.setText(nome);
     }else{
         jlLinhaSelecionada.setVisible(false);
         jlProdutoExcluir.setVisible(false);
         btDeletar.setVisible(false);
     }
    

    }

    protected void excluirItem_compra(){
    
    if(tbItem_compra.getSelectedRow() != -1){
    
    int resposta = JOptionPane.showConfirmDialog(this, Confirma exclusão do item?, Confirmação, JOptionPane.YES_NO_OPTION);
    
    if(resposta == JOptionPane.YES_NO_OPTION){
    
    Item_compraDAO item_compraDAO = new Item_compraDAO();
    
    item_compraDAO.excluirItem_compra(itens_compra.get(tbItem_compra.getSelectedRow()).getId_produto());
    
    listar();
    
    }
    
    }
    
    }
    
    }
    

4 Respostas

darlan_machado

Através do table model.

M

muito obrigado, vc é muito gentil !!! Deus te abençoa

darlan_machado

Você está usando o DefaultTableModel. Esta não é uma boa opção. Muito embora, essa solução te permita definir valores em uma célula específica, seria mais interessante usar um table model próprio.
Mas, se não quiser trocar, basta dar uma lida na documentação do DefaultTableModel

M

a minha jtable eu tenho que inserir os valores primeiro, vc acha que um setValueAt daria certo???

Criado 25 de setembro de 2018
Ultima resposta 25 de set. de 2018
Respostas 4
Participantes 2