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
}
}