Selecionar item de JComboBox

8 respostas Resolvido
programaçãojava
elvex

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…

8 Respostas

drsmachado

pesquise sobre os métodos setSelectedItem e setSelectedIndex

elvex

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…

drsmachado

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.

elvex

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

drsmachado

Proxy daqui bloqueia o pastebin.

elvex

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

}

Jonathan_Medeiros
Solucao aceita

Faz dessa maneira aqui:

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

elvex

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

Criado 13 de março de 2017
Ultima resposta 14 de mar. de 2017
Respostas 8
Participantes 3