JTextField

13 respostas
Lags

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.

13 Respostas

diego.urban

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

lazaropj

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

Lags

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:

public void carregarComboProduto()
{
   CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
   List<Produto> 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()));
      }
   });
       
      }

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

ViniGodoy
  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.

Lags

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

Lags
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
public void carregarComboProduto()   
{   
   CTR_ManterProduto ctrProduto = new CTR_ManterProduto();   
   List<Produto> 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()));   
      }   
   });   
         
      }
lina

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!

Lags

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.

Lags

Por favor galera me ajudem, estou precisando muito.

lina

Oi,

Eu usaria Thread.:

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

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

Tchauzin!

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:
public void carregarComboProduto()
{
   CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
   List<Produto> 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();
      }

   });
       
      }
diego.urban
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:
public void carregarComboProduto()
{
   CTR_ManterProduto ctrProduto = new CTR_ManterProduto();
   List<Produto> 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();
      }

   });
       
      }

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.

Lags
Galera segue o código da perguta acima feito com ajuda do Diego:
view plaincopy to clipboardprint?
public void carregarComboProduto() {   
        CTR_ManterProduto ctrProduto = new CTR_ManterProduto();   
        List<Produto> 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();   
  
        }   
    }
Criado 9 de dezembro de 2009
Ultima resposta 10 de dez. de 2009
Respostas 13
Participantes 5