Selecionar item de JComboBox

Galera, estou com uma dúvida sobre como selecionar um JComboBox a partir de um objeto que eu tenho. Tentei procurar mas não achei nada que se aplicasse ao mesmo caso. Eu tenho um form de cadastro de escolas. Na abertura deste form tem um método que preenche um combobox com os estados e, com base no que foi selecionado, preenche um outro combobox com as cidades (estes combobox são preenchidos com objetos do tipo Estado e Cidade). O que eu não consigo fazer é o seguinte: quando a tela abre, a escola é carregada (via uma consulta no banco) e os dados são mostrados no form (como nome, endereço, telefone, etc), porém não consigo fazer a seleção da cidade no combobox. Não sei se consegui ser claro, qualquer coisa me avisem, posso dar mais detalhes…

pesquise sobre os métodos setSelectedItem e setSelectedIndex

Sim, eu já pesquisei e já testei, porém não consegui fazer funciona. Por exemplo, eu fiz um:
nomeComboBox.setSelectedItem(escola.getCidade().getEstado());
Isto não funcionou…

Posso te garantir que é erro de programação. Alguma coisa está fazendo errado.
Sem ver o código, é impossível dizer o quê e sugerir alguma correção.

Também acho que devo estar fazendo algo errado. Dá uma olhada: http://pastebin.com/P6qLZgL9
É no método carregarInstituicao

Proxy daqui bloqueia o pastebin.

public class JIFrameInstituicaoEnsino extends javax.swing.JInternalFrame {

/**
 * Creates new form JIFrameInstituicaoEnsino
 */
public JIFrameInstituicaoEnsino() {
    initComponents();
    carregarEstados();
    carregarInstituicao();
}

private void carregarInstituicao() {
    Instituicao instituicao = (Instituicao) new InstituicaoDAO().consultarId(0);
    if (instituicao != null) {
        jtfId.setText(Integer.toString(instituicao.getId()));
        jtfNome.setText(instituicao.getNome());
        jtfCnpj.setText(instituicao.getCnpj());
        jtfIe.setText(instituicao.getInscricaoEstadual());
        jtfTelefone.setText(instituicao.getTelefone());
        jtfEmail.setText(instituicao.getEmail());
        jtfSite.setText(instituicao.getSite());
        jtfLogradouro.setText(instituicao.getLogradouro());
        jtfNumero.setText(instituicao.getNumero());
        jtfBairro.setText(instituicao.getBairro());
        jtfComplemento.setText(instituicao.getComplemento());
        jcbUf.setSelectedItem(instituicao.getCidade().getEstado());
        jcbCidade.setSelectedItem(instituicao.getCidade());
    } else {
        Mensagem.erro("Problema ao carregar instituição de ensino");
        jbtConfirmar.setEnabled(false);
    }
}

private void salvarInstituicao() {
    Instituicao instituicao = new Instituicao();
    instituicao.setId(Integer.parseInt(jtfId.getText()));
    instituicao.setNome(jtfNome.getText());
    instituicao.setCnpj(Formatador.removerPontuacaoCnpj(jtfCnpj.getText()));
    instituicao.setInscricaoEstadual(jtfIe.getText());
    instituicao.setTelefone(Formatador.removerPontuacaoTelefone(jtfTelefone.getText()));
    instituicao.setEmail(jtfEmail.getText());
    instituicao.setSite(jtfSite.getText());
    instituicao.setLogradouro(jtfLogradouro.getText());
    instituicao.setNumero(jtfNumero.getText());
    instituicao.setComplemento(jtfComplemento.getText());
    instituicao.setBairro(jtfBairro.getText());
    instituicao.setCidade((Cidade)jcbCidade.getSelectedItem());
    
    boolean resultado = new InstituicaoDAO().salvar(instituicao);
    if (resultado) {
        Mensagem.sucesso("Alterações registradas com sucesso");
    } else {
        Mensagem.erro("Problema ao registrar alterações");
    }
}

private void carregarEstados() {
    DefaultComboBoxModel modelo = new DefaultComboBoxModel();
    
    ArrayList<IEntidade> estados = new EstadoDAO().consultarTodos();
    for (int i = 0; i < estados.size(); i++) {
        Estado e = (Estado) estados.get(i);
        modelo.addElement(e);
    }

    jcbUf.setModel(modelo);
}

private void carregarCidades() {
    Estado estado = (Estado) jcbUf.getSelectedItem();
    if (estado.getId() > 0) {
        DefaultComboBoxModel modelo = new DefaultComboBoxModel();
        
        ArrayList<IEntidade> cidades = new CidadeDAO().consultarCidadesPorEstado(estado);
        for (int i = 0; i < cidades.size(); i++) {
            Cidade cid = (Cidade) cidades.get(i);
            modelo.addElement(cid);
        }
        
        jcbCidade.setModel(modelo);
    } else {
        Mensagem.aviso("Selecione um estado");
    }
}

//Daqui para baixo só há código da interface gráfica             

}

Faz dessa maneira aqui:

nomeComboBox.getModel().setSelectedItem(escola.getCidade().getEstado());

1 curtida

Era isso mesmo, cara! Muito obrigado! Não sei porque não pensei nisso antes, faz muito sentido hehe