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
Qual a logica para atualizar combobox cidade, conforme estado
8 Respostas
A Lógica:
- no seu primeiro combo, vc faZ um pesquisa no seu bco e monta o combo com os valores dos estados.
- 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
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
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
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
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
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
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,
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