Qual a logica para atualizar combobox cidade, conforme estado

8 respostas
F

Qual a logica para atualizar combobox cidade, conforme estado, tipo quando eu escolher minas gerais, so me lsitar as cidades de minas, eu to usando acsses como db

8 Respostas

berg.pb

A Lógica:

  1. no seu primeiro combo, vc faZ um pesquisa no seu bco e monta o combo com os valores dos estados.
  2. qdo seu iprimeiro combo for alterado, faz uma nova pesquisa no bco para pegar as cidades referentes ao estado correspondente.

Alguns metodos q vc deverá usar: getSelectedIndex, getSelectedIndex, set e getModel, addItem…

Dá uma lida na api do JComboBox()
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JComboBox.html

Agora, a pergunta crucial: como vc ta fazendo… o q vc ja montou… tá gerando algum erro… tem como mostrar código… ?

Abraços

F

tenho 2 tabelas, uma de estado, cidade

INSERT INTO estado VALUES (1, 'Acre', 'AC') --cod_estado, nome_estado, sigla_estado INSERT INTO cidade VALUES (1, 'Anadia','1') --cod_cidade, nome_cidade, fk_estado

ae no meu inicio eu coloco pra selecionar todos os estados e cidade

no meu action do combo eu coloquei

try { String sql = "SELECT * FROM bairro WHERE bai_nome LIKE '" + cbBairro.getSelectedItem() + "'"; Bairro.executeSQL(sql); Bairro.resultset.first(); tfBaiCodigo.setText(Bairro.resultset.getString("bai_codigo")); }

ae ele me lsita todos bairos da minha tabela, porem num to intendendo como fazer para quando eu selecionar o estado 3 por exemplo, jogar as cidade de 1 a 10, isso que pensei na logica, so num to sabendo usar

Thiago_Luis

Fala cara, blza?

Eu acho que esse problema tem mais a ver com modelagem de dados.
Ex: Vc disse que tem 2 tabela, uma “estado” e outra “cidade”.
Um estado pode ter mais do que uma cidade e cada cidade pode ter apenas uma cidade, até ai blza.
Então, na sua tabela “estado”, terá um campo “estado” e um campo (ID) de identificação (São Paulo = 1, Rio de Janeiro = 2, Minas = 3) etc.
Este ID será a chave primária da tabela “estado”.
Na tabela “cidade”, o campo ID da tabela “estado” será chave secundária em algum campo (Ex: fk_id).
Então, na tabela “cidade”, as cidades São Paulo, Santos, São Caetano, Diadema, etc, vão ter o mesmo id referente ao estado de São Paulo da tabela “estado”.

A lógica que vc precisa pensar é: Quando vc selecionar um estado, ele vai ter um ID. Será com base neste ID que vc buscará na tabela “cidade”, todas as cidades com o mesmo ID do estado que vc selecionou.
Recuperando as cidades, vc colocará num ResultSet, fará a varredura padrão no ResultSet e colocará no combobox.

Ajudei ou atrapelhei :? ?

Abraço

F

Ajudou sim, esta parte intendi como fazer agora, mas outro problema veio a tona, quando selecionar o combobx estado, automaticamente atualizar o combo da cidade, pq toda vez q dou um tab ele ja vem preendhido com tudo

Thiago_Luis

O que vc pode fazer é:

Quando vc iniciar o programa, só faz a consulta no BD na tabela “estado”.
Vc adiciona no addActionListener o combobox relacionado a tabela “estado”.
O combobox relacionado a tabela “cidade”, vc deixa inativo (combobox.setEnable(false)) Eu acho.
No actionPerformed vc verifica se a action que ocorreu foi a do combobox relacionado a “estado”.
Se for, mas só se for, faz a consulta na tabela “cidade”, ativa o combobox relacionado a “cidade” (combobox.setEnable(true) e joga a consulta lá.

Não sei se vc fez assim, mas assim, só acontece a consulta na tabela “cidade” quando vc seleciona algum estado.
Mas precisa adicionar o combobox do estado ao addActionListener.

Abraço

Lavieri

Eu tinha uma classe que fazia isso =[ … não a encontro… ta em alum dos meus pen driver o.O

é uma classe… GuiUtils … que vc linka um combobox no outro… any ways … tem esse aki q é ótimo tb, que é para vc ir digitando e ele selecionar o campo pra vc … que é para auto completar

http://www.guj.com.br/posts/list/108443.java

F

no meu combobox de estado esta desta forma

try { String sql = "SELECT * FROM estado WHERE est_nome LIKE '" + cbEstado.getSelectedItem() + "'"; conectar.executeSQL(sql); conectar.resultset.first(); tfEstCodigo.setText(conectar.resultset.getString("est_codigo")); }

ae to tentando, nao conheco este adction listner ainda, to vendo aqui,

Lavieri

Acho q assim fica muito amarrado ^^ …

esperimenta ir descoplando o código e aumenta a coesão…

faz um arquivo pra faze as conexões com o banco

poem um método nele, para retornar uma lista de estados…

ai vc faz ouro método nele… que recebe por exemplo a sigla do estado, e retorna a lista das cidades do estado…

ai na sua view, vc usa os objetos lists

Criado 9 de maio de 2009
Ultima resposta 10 de mai. de 2009
Respostas 8
Participantes 4