Como fazer um calculo na JLabel por meio de uma JTable?

Olá pessoal eu gostaria de fazer um calculo em um jlabel por meio de uma jtable… onde eu coloque uma linha “preço total” e ao colocar outra linha preço total eles somem entre si e apresentem o resultado na JLabel “Dados da Venda”

parece meio confuso agora mas vou mostrar a imagem e o código:

ali na JTable é possivel a coluna preço total… para cada produto vai haver um preço total de acordo com a quantidade de produtos, mas cada vez que colocar um novo produto, eu gostaria de que calculasse cada “preço total” e apresentasse naquela jLabel enorme dentro do “Total da Venda”

aqui ele não está calculando e sim apresentando preço total do novo produto apresentado na tabela… alguém pode me ajudar?

import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;

import com.mysql.jdbc.Blob;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Tela_Sistema_de_Vendas<Row> extends JFrame implements ActionListener{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JButton bt_vender, bt_novo, bt_aplicar, bt_limpar, bt_sair;
	private JLabel l_cliente, l_produto, l_quantidade, l_dadosvenda,l_totalvenda, l_precovenda, imageprod;
	private JTextField c_cliente, c_produto, c_quantidade;
	private JPanel p1, p2, p3, p4, pbt;
	float calculo;
	int resposta;
	String precovenda;
	String host = "127.0.0.1";
    String user = "root"; 
    String password = "";
    String db = "eletronicworld";
	
	
	public Tela_Sistema_de_Vendas() {
		// TODO Auto-generated constructor stub
		setTitle("Sistema de Vendas");
		setBounds(10,100,1250,635);
		setResizable(false);
		setLayout(null);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setIcon();

		l_dadosvenda = new JLabel("Dados da Venda");
		l_dadosvenda.setBounds(30,10,100,20);
		this.add(l_dadosvenda);
		
		l_cliente = new JLabel("Cliente");
		l_cliente.setBounds(40,50,50,20);
		this.add(l_cliente);
		
		l_produto = new JLabel("Produto");
		l_produto.setBounds(205,50,50,20);
		this.add(l_produto);
		
		l_quantidade = new JLabel("Quantidade");
		l_quantidade.setBounds(40,120,100,20);
		this.add(l_quantidade);
		
		l_totalvenda = new JLabel("Total da Venda");
		l_totalvenda.setBounds(730,10,85,20);
		l_totalvenda.setBackground(new Color(0,0,0));
		this.add(l_totalvenda);
		
		l_precovenda = new JLabel("R$ 00.00");
		l_precovenda.setBounds(690, 80, 250, 50);
		l_precovenda.setFont(new Font("Arial",Font.PLAIN,40));
		this.add(l_precovenda);
		
		imageprod = new JLabel();
		imageprod.setBounds(1000, 70, 200, 300);
		imageprod.setBorder(BorderFactory.createLineBorder(new Color(181, 181, 181),1));
		this.add(imageprod);
				
		c_cliente = new JTextField();
		c_cliente.setBounds(40, 75, 140, 20);
		this.add(c_cliente);
		
		c_produto = new JTextField();
		c_produto.setBounds(205,75,140,20);
		this.add(c_produto);
		
		c_quantidade = new JTextField();
		c_quantidade.setBounds(40, 145, 140, 20);
		this.add(c_quantidade);

		bt_aplicar = new JButton("Aplicar");
		bt_aplicar.setBounds(220,140,100,30);
		this.add(bt_aplicar);
		
		bt_novo = new JButton("Novo");
		bt_novo.setBounds(50,550,100,30);
		this.add(bt_novo);
		
		bt_vender = new JButton("Vender");
		bt_vender.setBounds(440,550,100,30);
		this.add(bt_vender);
		
		bt_limpar = new JButton("Limpar");
		bt_limpar.setBounds(180,550,100,30);
		this.add(bt_limpar);
		
		bt_sair = new JButton("Sair");
		bt_sair.setBounds(310,550,100,30);
		this.add(bt_sair);
				
		p1 = new JPanel();
		p1.setBounds(25,10,100,22);
		this.add(p1);
		
		p2 = new JPanel();
		p2.setBounds(10,20,430,180);
		p2.setBorder(BorderFactory.createLineBorder(new Color(181, 181, 181),1));
		this.add(p2);
		
		p3 = new JPanel();
		p3.setBounds(727,10,90,20);
		this.add(p3);
		
		p4 = new JPanel();
		p4.setBounds(592,20,340,180);
		p4.setBorder(BorderFactory.createLineBorder(new Color(181, 181, 181),1));
		this.add(p4);

		pbt = new JPanel();
		pbt.setBounds(30,540,530,50);
		pbt.setBorder(BorderFactory.createLineBorder(new Color(181, 181, 181),1));
		this.add(pbt);

		Border  softBevelRaisedBorder = BorderFactory.createSoftBevelBorder(BevelBorder.RAISED); 
		Border  softBevelLoweredBorder = BorderFactory.createSoftBevelBorder(BevelBorder.LOWERED);
		
		//criando tabelas
		//tentar criar outro select para jogar dados na tabela
				
			DefaultTableModel model = new DefaultTableModel(); 
			JTable tab = new JTable(model);
			JScrollPane scroll = new JScrollPane();
			scroll.setViewportView (tab);
			scroll.setBounds(10, 220, 925, 295);
			this.add(scroll);
			model.addColumn("Código"); 
			model.addColumn("Cliente"); 
			model.addColumn("Produto"); 
			model.addColumn("Fornecedor");
			model.addColumn("Quantidade");
			model.addColumn("Preço Unitário (R$)");
			model.addColumn("Preço Total (R$)");
			TableModelListener tabela = null;
			model.addTableModelListener(tabela);
			
			
			bt_aplicar.addActionListener(new ActionListener() {			
				public void actionPerformed(ActionEvent ev) {
					// TODO Auto-generated method stub
					if(c_cliente.getText().isEmpty()||c_produto.getText().isEmpty()||c_quantidade.getText().isEmpty())
					{
						JOptionPane.showMessageDialog(null, "Preencha todos os campos");
					}
					else{
						try 
                        {
						Class.forName("com.mysql.jdbc.Driver");
                        Connection connection = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + db + "?autoReconnect=true",user,password); 
                        connection.setAutoCommit(false);
                        
                        //Crio a query
                        String sql = "select * from cadastrocliente where nome like ?";
                        String sql2 = "select * from cadastroproduto where produto like ?";
                        //String sql = "select * from filmes"; 
                        

                        //Crio o statement
                        PreparedStatement stmt = connection.prepareStatement(sql);

                        PreparedStatement stmt2 = connection.prepareStatement(sql2);
                        

                        //Passo parametro
                        stmt.setString(1, '%'+c_cliente.getText()+'%' );
                        stmt2.setString(1, '%'+c_produto.getText()+'%' );
                        
                        //Executo a query
                        ResultSet rseletronicworld = stmt.executeQuery();
                        ResultSet rseletronicworld2 = stmt2.executeQuery(); 
                        rseletronicworld.next();
                        rseletronicworld2.next();
                        
                        float n1 = Float.parseFloat(c_quantidade.getText());
						calculo = (float) (n1 * rseletronicworld2.getInt("precounitario")); 
						String cifrao2 = "R$ ";
                        //Mostro os dados

							
                        model.addRow(new Object[]{rseletronicworld2.getString("IDCod"),
                        						  rseletronicworld.getString("nome"),
                        						  rseletronicworld2.getString("produto"),
                        						  rseletronicworld2.getString("fornecedor"),
                        						  (c_quantidade.getText()),
                        						  rseletronicworld2.getFloat("precounitario"),
                        						  (calculo)});
                        l_precovenda.setText(cifrao2+Float.toString(calculo));
                        
                        try{
                        	rseletronicworld = stmt.executeQuery();
                        	if(rseletronicworld.next()){
                        		Blob blob = (Blob) rseletronicworld.getBlob(1);
                        		ImageIcon imageicon = new ImageIcon(blob.getBytes(1, (int)blob.length()));
                        	}
                        } catch(SQLException e) {
                        	
                        }
                        
                                                                    
                        rseletronicworld.close(); 
                        connection.close();
                        
                } catch (ClassNotFoundException e) {
                        JOptionPane.showMessageDialog(null,"Erro! Driver JDBC não encontrado!");
                        e.printStackTrace();
                } catch (SQLException e) {
                		JOptionPane.showMessageDialog(null,"Erro! Campos preenchidos não identificados!");
                        e.printStackTrace();
                } 
				}
					}
				});
						
			bt_novo.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evto){	
					if(evto.getSource() == bt_novo){
						resposta = JOptionPane.showOptionDialog(null,"Deseja Cadastrar Novo Produto?","Cadastrar Produto",JOptionPane.YES_NO_OPTION, EXIT_ON_CLOSE, null, null, null);
						if (resposta == JOptionPane.YES_OPTION) {
							// verifica se o usu�rio clicou no bot�o YES
							dispose();
							try {
								Tela_Cadastro_Prod produtos = new Tela_Cadastro_Prod();
								produtos.setVisible(true);
							} catch (ParseException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} catch (ClassNotFoundException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} catch (SQLException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}							
							} 
					}
					//System.exit(0);
				}
			});
			
			bt_vender.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evto){	
					if(evto.getSource() == bt_vender){
						resposta = JOptionPane.showOptionDialog(null,"Deseja Vender Produto?","Vender Produto",JOptionPane.YES_NO_OPTION, DISPOSE_ON_CLOSE, null, null, null);
						if (resposta == JOptionPane.YES_OPTION) {
							try 
	                        {
							Class.forName("com.mysql.jdbc.Driver");
	                        Connection connection = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + db + "?autoReconnect=true",user,password); 
	                        connection.setAutoCommit(false);
	                        
	                        /*for(int i=0;i<model.getRowCount();i++){
		                    	   
		                    	   String IDCod = (String) model.getValueAt(i,1);
		                    	   String cliente = (String) model.getValueAt(i,2);
		                    	   String produto = (String) model.getValueAt(i,3);
		                    	   String fornecedor = (String) model.getValueAt(i,4);
		                    	   Float quantidade = Float.parseFloat(model.getValueAt(i,5).toString()) ;
		                    	   Float precounitario = Float.parseFloat(model.getValueAt(i,6).toString()) ;
		                    	   Float precototal = Float.parseFloat(model.getValueAt(i,7).toString()) ;
		                       }*/
	                        
	                        //Crio a query
	                        String sql = "insert into sistemavenda(IDCod,cliente,produto,fornecedor,quantidade,precounitario,precototal) values (?,?,?,?,?,?,?)";
	                        //String sql = "select * from filmes"; 
	                        
	                        //Crio o statement
	                        PreparedStatement stmt = connection.prepareStatement(sql);

	                        
	                       int rseletronicworld = stmt.executeUpdate(); 
                            
                            connection.commit();
                            connection.close();
	                        
	                        }catch (ClassNotFoundException e) {
                                System.out.println("Erro! Driver JDBC não encontrado!");
                                e.printStackTrace();
                        } catch (SQLException e) {
                                System.out.println("Erro! Problemas realizando a conexão ou a consulta!");
                                e.printStackTrace();
                        }							
							JOptionPane.showMessageDialog(null, "Venda Realizada com Sucesso!");	
							Tela_Relatorio_de_Vendas relatorio = new Tela_Relatorio_de_Vendas();
							relatorio.InserirTabela(model);
							relatorio.setVisible(true);
							}
						
					}
					
				}
				});
			
			bt_limpar.addActionListener(new ActionListener(){

				@Override
				public void actionPerformed(ActionEvent arg0) {
					// TODO Auto-generated method stub
					while(tab.getModel().getRowCount()>0){
						((DefaultTableModel) tab.getModel()).removeRow(0);
						String cifrao = "R$ 00.00";
						l_precovenda.setText(cifrao);
						
					}

					c_cliente.setText("");
					c_produto.setText("");
					c_quantidade.setText("");
				}
				});
			
			bt_sair.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evto){	
					if(evto.getSource() == bt_sair){	
						resposta = JOptionPane.showOptionDialog(null,"Tem Certeza que Deseja Sair?","Deseja Sair", JOptionPane.YES_NO_OPTION, DISPOSE_ON_CLOSE, null, null, null);
						if (resposta == JOptionPane.YES_OPTION) {
						// verifica se o usuário clicou no botão YES						
							dispose();
							} 		
					}
				}
			});
	}
	
	
	public void setIcon() {
		// TODO Auto-generated method stub
	setIconImage(Toolkit.getDefaultToolkit().getImage("Imagens/logoicon.png"));
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Tela_Sistema_de_Vendas vendas = new Tela_Sistema_de_Vendas();
		vendas.setVisible(true);
		
		 try {
	            for (UIManager.LookAndFeelInfo info : 
	                    UIManager.getInstalledLookAndFeels()) {
	                if ("Windows".equals(info.getName())) {
	                    UIManager.setLookAndFeel(info.getClassName());
	                    break;
	                }
	            }
	        } catch (ClassNotFoundException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        } catch (InstantiationException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        } catch (IllegalAccessException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        } catch (UnsupportedLookAndFeelException ex) {
	            Logger.getLogger(Tela_Cadastro_Prod.class.getName()).log(Level.SEVERE,
	                    null, ex);
	        }
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}

}

Cara, pra tu exibir na JTable, tu provavelmente joga o valor lá de alguma forma. É só pegar esse valor e somar com o que está na JLabel.
Digamos…

float valorTabela = 10.2; // valor a adicionar na tabela
model.add(valorTabela); // adiciona na tabela, só um exemplo
String auxiliar = suaLabel.substring("R$",""); // remove o R$ da JLabel
suaLabel.setText("R$"+Float.parseFloat(auxiliar)+valorTabela); // soma e exibe na JLabel

vou fazer um teste e eu te falo

esse model.add, é para add row (adicionar linha)?

Acho que sim cara
Desculpa, eu fiz na mão, não acompanhei nenhum código e me esqueci na hora. Mas o objetivo é adicionar uma linha sim!