Estou com uma dúvida, como calculo automaticamente preço total?
A minha idéia é seguinte:
Quando seleciono produto no meu combo, traz com ele codigo e preço, porém queria que ao digitar quantidade, que seja calculada o preço total do produto.
Alguém pode-me ajudar?
Desde já agradeço pela atenção.
Pessoal eu agradeço muito pela ideia, mas o problem é que sou iniciante em java e nunca mexi com este evento, se tem um ideia mais fácil de fazer isso seria bem vindo.
Criei o método Calcular preço total, se tiver errado podem-me corrigir
Pessoal já vi como faz focusListener. Agora quero saber se este focusListener para meuTxtField deve ficar dentro deste método carregarcombo ou tenho que criar um método para ele
[code] public void carregarComboProduto()
{
CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
List produto = ctrProdutos.listarProdutos(“nome”);
JCBoxNomeProduto.addItem("–Seleciona–");
for (Produto listaproduto: produto) {
DefaultComboBoxModel cbox =(DefaultComboBoxModel)JCBoxNomeProduto.getModel();
JCBoxNomeProduto.addItem((Produto)listaproduto);
System.out.println("O meu combo: "+JCBoxNomeProduto);
}
JCBoxNomeProduto.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
Produto p = (Produto)JCBoxNomeProduto.getSelectedItem();
JTxtCodigoProduto.setText(""+p.getCodigoProduto());
JTxtPreco.setText(String.valueOf(p.getValorVenda()));
}
});
Quando seleciono produto no meu combo, traz com ele codigo e preço, porém queria que ao digitar quantidade, que seja calculada o preço total do produto.
Lini eu viagei na sua pergunta anterior(Eu ainda não entendi direito a sua dúvida. (Quando pintei o meu cabelo fiquei lenta… sei lá rsrs)
Você tem 2 componentes, certo?
Um deles é um JComboBox, certo? Quais os valores que ele possui?
Você tem um 1 JTextField, certo? Nele você gostaria de digitar a quantidade? e gostaria que nesse JComboBox
mostrasse o valor total já calculado? )
Eu tenho combo tudo já feito, que traz do banco o nome do produto, quando seleciono um nome ele exibe o código associado a este nome num txtField e preço deste produto também num txtfield. Eu quero que, quando usuário digitar a quantidade do produto que deseja comprar que seria um outro txtfield, que chama-se calcularprecoTotal e exibe o valo num novo txtfield(preçototal).
O combo funciona perfeitamente este é o código do combo associado a txtfield:
[code]public void carregarComboProduto()
{
CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
List produto = ctrProdutos.listarProdutos(“nome”);
JCBoxNomeProduto.addItem("–Seleciona–");
for (Produto listaproduto: produto) {
DefaultComboBoxModel cbox =(DefaultComboBoxModel)JCBoxNomeProduto.getModel();
JCBoxNomeProduto.addItem((Produto)listaproduto);
}
JCBoxNomeProduto.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
Produto p = (Produto)JCBoxNomeProduto.getSelectedItem();
JTxtCodigoProduto.setText(""+p.getCodigoProduto());
JTxtPreco.setText(String.valueOf(p.getValorVenda()));
CalculaprecoTotal();
}
[quote=Lags] Lini eu viagei na sua pergunta anterior(Eu ainda não entendi direito a sua dúvida. (Quando pintei o meu cabelo fiquei lenta… sei lá rsrs)
Você tem 2 componentes, certo?
Um deles é um JComboBox, certo? Quais os valores que ele possui?
Você tem um 1 JTextField, certo? Nele você gostaria de digitar a quantidade? e gostaria que nesse JComboBox
mostrasse o valor total já calculado? )
Eu tenho combo tudo já feito, que traz do banco o nome do produto, quando seleciono um nome ele exibe o código associado a este nome num txtField e preço deste produto também num txtfield. Eu quero que, quando usuário digitar a quantidade do produto que deseja comprar que seria um outro txtfield, que chama-se calcularprecoTotal e exibe o valo num novo txtfield(preçototal).
O combo funciona perfeitamente este é o código do combo associado a txtfield:
[code]public void carregarComboProduto()
{
CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
List produto = ctrProdutos.listarProdutos(“nome”);
JCBoxNomeProduto.addItem("–Seleciona–");
for (Produto listaproduto: produto) {
DefaultComboBoxModel cbox =(DefaultComboBoxModel)JCBoxNomeProduto.getModel();
JCBoxNomeProduto.addItem((Produto)listaproduto);
}
JCBoxNomeProduto.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
Produto p = (Produto)JCBoxNomeProduto.getSelectedItem();
JTxtCodigoProduto.setText(""+p.getCodigoProduto());
JTxtPreco.setText(String.valueOf(p.getValorVenda()));
CalculaprecoTotal();
}
});
}[/code]
[/quote]
Implemente e adicione um listener no seu JTextField também.
Como você fez no ComboBox…
Você pode usar o FocusListener que o valor vai ser calculado quando o foco sair do JTextField, ou pode usar KeyListener que você pode calcular a medida que o usuário vai digitando a quantidade.
Galera segue o código da perguta acima feito com ajuda do Diego:
[code]view plaincopy to clipboardprint?
public void carregarComboProduto() {
CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
List produto = ctrProdutos.listarProdutos(“nome”);
JCBoxNomeProduto.addItem("–Seleciona–");
for (Produto listaproduto : produto) {
DefaultComboBoxModel cbox = (DefaultComboBoxModel) JCBoxNomeProduto
.getModel();
JCBoxNomeProduto.addItem((Produto) listaproduto);
}
// o método carregarComboProduto deve somente carregar as informações no
// comboBox e não criar esses listeners e adicioná-los nos botões.
// de preferência, coloque essas quatro linhas aqui de baixo no método
// construtor da classe.
ComboBoxActionListener comboListener = new ComboBoxActionListener();
// listener de ação sendo adicionado no combo box
JCBoxNomeProduto.addActionListener(comboListener);
QuantidadeKeyListener qtadeKeyListener = new QuantidadeKeyListener();
// listener de tecla sendo adicionado no textField de quantidade
JTxtQuantidade.addKeyListener(qtadeKeyListener);
}
// método que atualiza o preço total
private void atualizarPrecoTotal() {
// obtenho o produto
Produto p = (Produto) JCBoxNomeProduto.getSelectedItem();
// obtendo a quantidade digitada pelo usuário.
// aqui você deve fazer um tratamento das inforamações contidade no
// getText, pois o campo de texto da
// quantiadde pode estar vazio ou conter letras.. porém você quer
// somente números.
int qtde = Integer.parseInt(JTxtQuantidade.getText());
// calculando o preto total
double total = getPrecoTotal(qtde, p.getValorVenda());
// atualizar o textField de preco total com o valor calculado.
// OBS: o preço total não pode ser alterado pelo usuário, de preferência
// use um JLabel e não um JTextField para mostrar essa informação
JTxtPreco.setText(String.valueOf(total));
}
// método que faz o produto de quantidade e precoUnitário.
private double getPrecoTotal(int qtde, double precoUnitario) {
return qtde * precoUnitario;
}
private class ComboBoxActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// toda vez que um item é selecionado no combo, executa esse
// método...
atualizarPrecoTotal();
}
}
private class QuantidadeKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// toda vez que uma tecla é digitada no JTextField de quantidade,
// esse método é executado...
atualizarPrecoTotal();
}
}