[RESOLVIDO]Erro para converter variável

Olá pessoal,

Tenho um método que serve para capturar o click duplo na JTable e então buscar o usuário no banco de acordo com o código na linha clicada, posteriormente enviar os parâmetros para outro JFrame afim de editá-los. O problema é que a conversão não acontece na linha do método Integer.parseInt(), segue abaixo:

private void clickDuplo(java.awt.event.MouseEvent evt) {                                      
    int linha;                 
    int codigo;
    //Verifica se o click na JTable é duplo, pega o código da linha para consultar o usuário
    if(evt.getClickCount() == 2){            
        linha = tblUsuarioConsulta.getSelectedRow();                       
        codigo = Integer.parseInt((String)tblUsuarioConsulta.getValueAt(linha, 0)); //A execução para aqui......           
        UsuarioCTR usuarioCTR = new UsuarioCTR();
        List<Usuario> usuarios = usuarioCTR.consultaUsuarios(codigo);
            
        for(Usuario usuario : usuarios){
            new FrmUsuario().recebeUsuario(usuario.getCodigo(), usuario.getNome(), usuario.getLogin(), usuario.getSenha(), usuario.getConfirmaSenha(), usuario.getTipo());
        }                                 
    }                      
}

Esse é o método que recebe os parâmetros, nem pude testar ainda já que a execução nem chega até aqui, postei mas para saber se há algo errado.

protected void recebeUsuario(int codigo, String nome, String login, String senha, String confirmaSenha, String tipo){                
    Object cod1 = (Object) codigo;
    String cod2 = (String) cod1;
    lblAutomatico.setText(cod2);
    txtNome.setText(nome);
    txtLogin.setText(login);
    txtSenha.setText(senha);
    txtConfirmarSenha.setText(confirmaSenha);
    cmbTipo.setSelectedItem(tipo);
        
    new FrmUsuario().setVisible(true);
}

Esse é o erro que aparece:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
	at view.FrmUsuarioConsulta.clickDuplo(FrmUsuarioConsulta.java:291)

Algo de errado com o código??

Tenta Usar na linha que da o erro

int codigo = Integer.valueOf(“String que sera convertida para int”)

O método getValueAt retorna um objeto, então não tem porquê fazer cast de String pra depois usar parseInt, basta usar um cast direto ((int)tblUsuarioConsulta.getValueAt(x,y)), eu acredito. Tente fazer o que eu disse e o que o jefersonpo dizemos, se algum der certo, dê feedback :slight_smile:

Faz o que War Paz dise;

O método está retornando um Object e não um String. Faz um parse direto.

Bom pessoal quanto a conversão parece ter funcionado, mas me surgiu outro problema agora. A execução não entra no “for”… está correto a forma que estou passando os parâmetros para outro JFrame???

Nem aparece erro algum.

Não entendi direito.
Pelo que vc postou no cófigo, vc tá fazendo um new FrwmUsuario passando os parametros, e dentro deste form, vc faz de novo um outro new FrmUsuario, sem parametros, e mandando aparecer.

Então, se vc conseguiu encontrar o usuário, melhor vc fazer o seguinte:

frmUsuario = new FrmUsuario();
frmUsuario.setUsuario(Usuario u);
frmUsuario.setVisible(true);

Dentro do FrmUsuario, vc, pega o usuario passado e seta os itens.
Uma outra opção é vc passar o usuario no construtor do FrmUsuario. Assim, ficaria mais limpo o código.

new FrmUsuario(Usuario u).setVisible(true);

Espero ter ajudado.
Abraços

Valeu mesmo berg.pb ajudou muito deu certo aqui.

Vou aproveitar o tópico pra tirar umas dúvidas quanto ao meu modelo mvc, se alguém puder dar um olhada, agradeço. Na realidade quero saber se está correto como estou implementando.
Primeiro quanto a estrutura do meu projeto que é essa:

  • Projeto
    — Pacote(conexaoBD)
    — Pacote(teste)
    — Pacote(controller)
    — Pacote(dao)
    — Pacote(images)
    — Pacote(main)
    — Pacote(model)
    — Pacote(view)

1 - Quanto a estrutura ha algo de errado??

Agora com relação ao projeto mesmo, vou postar os fontes pra ficar mais fácil.

Na view tenho:

private void clickDuplo(java.awt.event.MouseEvent evt) {                            
        int linha;                 
        int codigo;
        //Verifica se o click na JTable é duplo, pega o código da linha para consultar o usuário
        if(evt.getClickCount() == 2){            
            linha = tblUsuarioConsulta.getSelectedRow();                       
            codigo = (int)tblUsuarioConsulta.getValueAt(linha, 0);            
            UsuarioCTR usuarioCTR = new UsuarioCTR();
            Usuario usuario = usuarioCTR.consultaUsuarios(codigo);
            
            //passando usuarios para o frame de edição (FrmUsuario)
            FrmUsuario frmUsuario = new FrmUsuario();
            frmUsuario.recebeUsuario(usuario);
            frmUsuario.setVisible(true);                       
        }                      
}

No controller tenho:

public Usuario consultaUsuarios(int codigo){
        Usuario usuario = usuarioDAO.consultaUsuarios(codigo);
        return usuario;
}

No dao tenho:

public Usuario consultaUsuarios(int codigo){        
        Usuario usuario = new Usuario();
        try{                        
            //String sql = "SELECT * FROM usuarios WHERE usu_codigo = ?";
            PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM usuarios WHERE usu_codigo = ?");
            stmt.setInt(1, codigo);
            ResultSet rs = stmt.executeQuery();            
            
            while(rs.next()){                
                usuario.setCodigo(rs.getInt("usu_codigo"));
                usuario.setNome(rs.getString("usu_nome"));
                usuario.setLogin(rs.getString("usu_login"));
                usuario.setSenha(rs.getString("usu_senha"));
                usuario.setConfirmaSenha(rs.getString("usu_confirmarSenha"));
                usuario.setTipo(rs.getString("usu_tipo"));                                                
            }
            
            rs.close();
            stmt.close();
        }catch(SQLException erro){
            erro.printStackTrace();
            System.out.println(erro.getMessage());
        } 
        return usuario;
}

No model tenho uma classe normal com campos de Usuários e métodos getters e setters.

2 - Algo de errado com relação ao modelo MVC??

3 - O correto de fazer validações de um campo do formulário é no modelo, ou na própria view??

Bom coloquei exemplos de métodos que fazem consultas, talvez algumas coisas seja meio óbvio pra vocês, mas é que me sinto meio inseguro ao implementar.

Do meu ponto de vista esta correto.
Com relacao à distribuicao de pctes, nao acho que exista um padrao. O que importa eh que vc entenda a ideia e a importancia do mvc, adapte para sua especificidade e implemente como tal.
Qto a validacao de itens da view, o melhor para trata-las eh na propria view. Assim como nao eh responsabilidade da view conhecer os detalhes de implem. das outras camadas, a reciproca tb deve ser verdadeira.

Deixando claro, itens da view, exemplo field vazio, maskaras e coisa e tal. Se, for, porexemplo, validsr slgum item de um bean, ja passa de sua responsabilidade. Deixe as views se responsabilizar por seus componentes.

Que bom que pude lhe ajudar. Estou um tanto enferrujado. Mas vamos la.
Abcs. :slight_smile:

Valeu ajudou muito!!

Abraço!!