JTextField

Fala galera,

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.

Implemente Listeners para o JComboBox e JTextField e os adicione nos respectivos componentes.

Só para completar oq p Diego falou…

O listener para o JtextField q eu usei pra fazer isso foi o Focus Listener…

Para quando eu colocar a data de nascimento, ele automaticamente fazer o calculo da idade em outro JTextField…

Esse listener tem dois métodos obrigatórios… Aquele q vc ganha o foco, e aquele no qual vc perde o foco…

Já o Listener do JComboBox eu não sei…

=/

Espero ter ajudado…

Abraço !!!

Já implementei, a minha dúvida como eu faria isso para multiplicar preço e quantidade para atribuir o preço tatal.

Segue o código:

[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()));
}
});

  }[/code]

Desde já agradeço pela atenção.

  1. Adicione um focusListener no seu JTextField;
  2. Implemente o método focusLost;
  3. Nele, calcule o produto.

É bom fazer o método de cálculo separado, para você também chama-lo a partir do actionListener da combo.

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

public void CalculaprecoTotal(){ DefaultComboBoxModel cbx=(DefaultComboBoxModel)JCBoxNomeProduto.getModel(); Produto p=(Produto)JCBoxNomeProduto.getSelectedItem(); String preco=String.valueOf(JTxtPreco); String qtd=String.valueOf(JTxtQtd); JTxtTotalPreco.setText(String.valueOf(Integer.parseInt(qtd)*Double.parseDouble(preco))); }

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()));
}
});

  }  [/code]

Oi,

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?

Confusão!!!

Tchauzin!

Rsrs…
Lina,

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.

Por favor galera me ajudem, estou precisando muito.

Oi,

Eu usaria Thread.:

[code]public void Window() {

 lo_combo = new JComboBox();
 lo_combo.setBounds(5,10,100,25);
 lo_combo.addItem("5");
 lo_combo.addItem("5");
 lo_combo.addItem("3");
 getContentPane().add(lo_combo);
	
 lo_quantidade = new JTextField();
 lo_quantidade.setBounds(5,70,100,25);
 getContentPane().add(lo_quantidade);
	
 new Thread
 (
       new Runnable()
       {
            public void run()
            {
                 while (!Thread.currentThread().isInterrupted())
                 {
                      if (lo_quantidade.getText().length() > 0)
                      {
                           System.out.println(Integer.parseInt(lo_combo.getSelectedItem().toString())*Integer.parseInt(lo_quantidade.getText()));
                           lo_quantidade.setText("");
                      }
		
                      synchronized (Thread.currentThread()) 
                      {
                           try
                           {
                                Thread.currentThread().wait(1000);
                           }
                           catch (InterruptedException e)
                           {
                                e.printStackTrace();
                           }
                    }
              }
          }
		}
   ).start();

}[/code]

Se quiser posso fazer um exemplo com Listener tbm, só que estou sem compilador…

Tchauzin!

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=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();   

    }   
}  

[/code]