Verificação de campos vazios e carregar combobox com coluna do banco mysql

3 respostas
T

Olá caríssimos. Estou começando a dar uma arranhada em Java, utilizando o Netbeans 7.1. Estou desenvolvendo um projeto para a faculdade. Tenho duas dúvidas, com as quais estou empacado no desenvolvimento.

A primeira é a respeito de carregar dados de uma coluna do meu banco de dados no jComboBox. Já vi várias postagens nesse e em outros fóruns, mas nada que tentei deu certo. Estou tentando fazer a aplicação em camadas, onde tenho a classe usuarioDAO, na qual criei o seguinte método:
public ArrayList<Usuario> buscaCidade (String uf){
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        Usuario usuario = null;
        ArrayList<Usuario> lista = new ArrayList<Usuario>();
        
        try {
            conn = Conexao.abreConexao();
            pst = conn.prepareStatement(buscaCidade);
            pst.setString(1, uf);
            rs = pst.executeQuery();
            while(rs.next()){
                usuario = new Usuario();
                usuario.setCidade(rs.getString("nome"));
                lista.add(usuario);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            Conexao.fechaConexao(conn, pst, rs, null);
        }
        return lista;
    }
Na classe Usuarios (onde criei o formulário), coloquei o seguinte código:
private void listaCombo(){
        UsuarioDAO user = new UsuarioDAO();
        Usuario usuario = null;
        ArrayList<Usuario> lista = new ArrayList<Usuario>();
        lista = user.buscaCidade(jCmbUf.getSelectedItem().toString());
        jCmbCidade = new JComboBox();
        for (int i = 0; i < lista.size(); i++){
            usuario = lista.get(i);
            jCmbCidade.addItem(usuario.getCidade());
        }
    }

Mas em qual evento do jComboBox devo carregar o método listaCombo()? Tentei no ActionPerformed, no itemStateChanged e nada. Preciso saber onde e como carregar esse método e se está certo.

A segunda dúvida é se existe uma forma simplificada de pesquisar se existe algum campo não preenchido no formulário, sem a necessidade de testar textField por textField, só para agilizar, uma vez que preciso criar 7 formulários.
Valeu.

3 Respostas

A

Sobre o combobox você pode fazer assim:

private void listaCombo(){  
        UsuarioDAO user = new UsuarioDAO();  
        Usuario usuario = null;  
        ArrayList<Usuario> lista = new ArrayList<Usuario>();  
        lista = user.buscaCidade(jCmbUf.getSelectedItem().toString());  
        jCmbCidade = new JComboBox();  
        Object dados[] = lista.toArray();
        DefaultComboBoxModel model = new DefaultComboBoxModel(dados);
        jCmbCidade.setModel(model);  

    }

A verificação dos textfield uma vez eu fiz assim:
Primeiro declarei um ArrayList de JTextFields junto com as variáveis de classe. Chamei essa variável de “campos”;
Em seguida, em cada textfield que eu tenho, acessei com o botão direito --> personalizar código. Isso me manda pra dentro do trecho do método initComponents() que o netbeans cria e que não deixa mexer no código. Logo depois da linha que instancia o textfield eu acrescentei isso:

campos.add(meuTextField);

Repetindo esse procedimento para cada textfield, você vai ter carregado um ArrayList com todos eles. Daí pra fazer uma validação (checar se tem algum sem digitação) seria por exemplo isso:

private void valida(){
      Iterator<JTextField> iterator = campos.iterator();
      
        
        while(iterator.hasNext()){
            if(iterator.next().isEmpty() ){
            ... aqui você vê o que vai fazer com o campo que faltou preencher
            }
        }
   }

Isso é útil também para “limpar” todos os campos num procedimento só, bastaria dar um iterator.next().setText() dentro do while.

JuniorMaia

carrega o combo quando tu abr eo frame, no construtor, seu combo já vai estar carregado quando a janela se inicializar

T

Muito obrigado, pessoal. Chamando o mesmo código que tinha feito no construtor do Frame, carregou o combo, mas quando seleciono outro estado no outro combo, não muda a lista. Permanece a mesma, que são as cidades do Acre que é o primeiro estado do combo. Já substituindo o código pelo que o Ademilton propôs, aparece sem dados, igual estava antes. Quanto aos TextFields vazios, esse código do Ademilson funcionou perfeito.
Será que alguém sabe me dizer onde está o erro para meu combo não atualizar???

Criado 11 de maio de 2012
Ultima resposta 13 de mai. de 2012
Respostas 3
Participantes 3