JcomboBox e JTextField

18 respostas
Lags

[b]Olá Pessoal,

Estou com uma dificuldade em relacionar nomes do combobox que foram puxados do banco a um textfield.

por exemplo:

Quando seleciono um nome no combo, quero que apareça código associado a este nome no txtfield.
Alguem pode-me ajudar?

Agradeço desde já.[/b]

18 Respostas

emmanuelrock

Cara, voce tem que tratar o evento do JCombobox, para quando o usuario selecionar o JTextField receber o texto selecionado. Veja qual evento deves tratar e mande brasa.

ViniGodoy

Sua combobox deve ser preenchida com objetos, não com strings.

Vamos supor que você vá montar uma combo de cidades. Crie um objeto do tipo Cidade, e insira-o na Combo. Depois, basta tratar o evento do clique do mouse, como o colega descreveu, obter a cidade relacionada, pegar seu id e definir um JTextField qualquer.

Lags

Na verdade não estou usando nenhum evento.

Este é código:

public void carregarComboProduto(){
 
      DefaultComboBoxModel cbox;
      ctrProdutos = new CTR_ManterProduto();
      List<Produto> produto = ctrProdutos.listarProdutos("nome");
      JCBoxNomeProduto.addItem("--Seleciona--");
      for (Produto listaproduto: produto)
      {
        cbox =(DefaultComboBoxModel)JCBoxNomeProduto.getModel();
        JCBoxNomeProduto.addItem((Produto)listaproduto);
            JTxtCodigoProduto.setText(String.valueOf(listaproduto.getCodigoProduto()));
            JTxtPreco.setText(String.valueOf(listaproduto.getValorVenda()));
      }
      }
Lags

Poderia por favor dar um exemplo?
O meu código esta listado no post anterior, vê me fala o que esta mal.

Att,
Lags

emmanuelrock

Cara vc deve implementar um listener para a sua classe JCBoxNomeProduto. De uma pesquisada em Listeners e JComboBox.

Lags

[b]Desculpa pessoal, mas não estou percebendo. Sabe o meu nível de conhecimento em java é inicial.

Eu ativei no combo o evento mouseClicked, nesse evento que vou chamar o método da combo ou vou emplementar algum código la?

Podem-me dar um exemplo baseado no meu código?

Desde já agradeço pela atenção.[/b]

emmanuelrock

Implementa o evento ActionListener. E dentro dele coloque System.out.println(seuCombo.getSelectedItem().toString()); e veja o que sera impresso.

ViniGodoy

Tente assim:

public void carregarComboProduto(){  
   ctrProdutos = 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()));
      }
   });
}
Lags

Vini tentei usei o código deu este erro:

Warning: br\com\karinhaEstoque\imagens\ico_grafico.jpg modified in the future. Warning: br\com\karinhaEstoque\imagens\logo.jpg modified in the future. Compiling 2 source files to C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\build\classes C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\src\br\com\karinhaEstoque\view\formInclusaoVenda.java:1296: <anonymous br.com.karinhaEstoque.view.formInclusaoVenda$22> is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener JCBoxNomeProduto.addActionListener(new ActionListener() { C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\src\br\com\karinhaEstoque\view\formInclusaoVenda.java:1299: cannot find symbol symbol : method getId() location: class br.com.karinhaEstoque.model.Produto JTxtCodigoProduto.setText(""+p.getId()); Note: C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\src\br\com\karinhaEstoque\view\formInclusaoVenda.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 2 errors C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\nbproject\build-impl.xml:363: The following error occurred while executing this line: C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\nbproject\build-impl.xml:168: Compile failed; see the compiler error output for details. FALHA NA CONSTRUÇÃO (tempo total: 2 segundos)

ViniGodoy

Troque getId() por getCodigoProduto()

Lags

vlw vini, melhorou, só que deu um outro erro.

C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\src\br\com\karinhaEstoque\view\formInclusaoVenda.java:1284: <anonymous br.com.karinhaEstoque.view.formInclusaoVenda$21> is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener JCBoxNomeProduto.addActionListener(new ActionListener() { Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 1 error C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\nbproject\build-impl.xml:363: The following error occurred while executing this line: C:\Documents and Settings\Cliente\Desktop\KarinhaEstoque_Modficado\Karen Estoque\nbproject\build-impl.xml:168: Compile failed; see the compiler error output for details. FALHA NA CONSTRUÇÃO (tempo total: 6 segundos)

Lags

Por favor galera me ajudam, pois procurei por este erro não encontrei resposta nenhuma para isso.

Dá erro no:

JCBoxNomeProduto.addActionListener(new ActionListener()

erro:<anonymous br.com.karinhaEstoque.view.formInclusaoVenda$20> is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener
JCBoxNomeProduto.addActionListener(new ActionListener()

ViniGodoy

É que actionPerformed é com A minusculo. Você não consegue ler você mesmo a mensagem de erro e corrigir? É que não tenho java instalado aqui.

emmanuelrock

Vc esta usando a classe para chamar o metodo ao inves de usar a variavel de referencia.

Lags

Vlw Vini, consegui resolver o problema.

Era só mudança de letra maiúscula para letra minúscula no actionPerformed.

Estava assim:public void ActionPerformed(ActionEvent evt)

era só mudar para:public void actionPerformed(ActionEvent evt)

É isso que se dá em programar horas e horas sem soltar o pc.

vlw.

Lags

Engraçado, descobri agora o erro e vi a sua mensagem também falando, era só mudança de “a” maiúscula para minúscula.

Muito obrigado Vini e Emmanuelrock .

Lags

Pessoal,

Estou com uma nova 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.
Desde já agradeço pela atenção.

lucasfsilveira

Galera estou precisando de uma ajuda relacionada a este Tópico este é meu evento ficou assim

public void carregarComboProduto(){  
   ClienteDAO dao = new ClienteDAO();  
   List<tblCliente> cliente ;
   cliente = new ClienteDAO().getListaClientes();  
//   ComboBoxCliente.addItem("--Seleciona--");  
   ComboBoxCliente.addItem(new String(""));  
   for (tblCliente listacliente: cliente)  {  
      DefaultComboBoxModel cbox =(DefaultComboBoxModel)ComboBoxCliente.getModel();    
      ComboBoxCliente.addItem((tblCliente)listacliente);   
      System.out.println(listacliente.toString());
              }

   ComboBoxCliente.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent evt) {         
         tblCliente p = (tblCliente)ComboBoxCliente.getSelectedItem();         
         txtCodCliente.setText(String.valueOf(p.getClientePCod()));
      }
   }

Só que no Combobox está mostrando desce modo

CLASSES.tblCliente@1e0bc08
CLASSES.tblCliente@158b649
CLASSES.tblCliente@127734f

e não estou conseguindo resolver alguém pode me dar uma ajuda aí ?....

Criado 8 de dezembro de 2009
Ultima resposta 15 de dez. de 2011
Respostas 18
Participantes 4