[Resolvido] Dificuldade para pegar informação

Oi, estou com uma dificuldade para pegar o id do usuário que esta logado no sistema e mandar para outra JFrame aonde deve aparecer em um jTextField que ira salvar as informações com o id do usuário. o motivo de ter o id do usuário que esta logado no sistema é aparecer no relatório quem cadastrou aquelas informações o relatório sera feito com iReport-5.6.0.

Código que faz o login:

public void logar() {
        String sql = "select * from tbusuario where login =? and senha=?";
        try {
            pst = conexao.prepareStatement(sql);
            pst.setString(1, txtUsuario.getText());
            pst.setString(2, txtSenha.getText());
            // a linha abaixo executa a query
            rs = pst.executeQuery();
            if (rs.next()) {
                String perfil = rs.getString(16);
       
            if (perfil.equals("Administrador")) {
                TelaPrincipal principal = new TelaPrincipal();
                principal.setVisible(true);
                TelaPrincipal.menuCadOcorrencia.setEnabled(true);
                TelaPrincipal.menuConOcorrencia.setEnabled(true);
                TelaPrincipal.menuCadUsuario.setEnabled(true);
                TelaPrincipal.menuConfiguracaoAgendaTelefonica.setEnabled(true);
               
                TelaPrincipal.jlUsuario.setText(rs.getString(2));
                TelaPrincipal.jlPerfilUsuario.setText(rs.getString(16));
                this.dispose();
            } else if (perfil.equals("Lider")) {
                TelaPrincipal principal = new TelaPrincipal();
                principal.setVisible(true);
                TelaPrincipal.menuCadOcorrencia.setEnabled(true);
                TelaPrincipal.menuConOcorrencia.setEnabled(true);
                TelaPrincipal.jlUsuario.setText(rs.getString(2));
                TelaPrincipal.jlPerfilUsuario.setText(rs.getString(16));
                this.dispose();

            } else {
                TelaPrincipal principal = new TelaPrincipal();
                TelaPrincipal.menuCadOcorrencia.setEnabled(true);
                principal.setVisible(true);
                
                TelaPrincipal.jlUsuario.setText(rs.getString(2));
                TelaPrincipal.jlPerfilUsuario.setText(rs.getString(16));

                this.dispose();
            }
        } else {
            JOptionPane.showMessageDialog(null, "Usuario ou senha invalido!");
        }

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

Esse método pega os valores nos campos de texto login e senha, compara se existe eles no banco, verifica o perfil caso for Administrador tem acesso a tudo, líder limitado e o atendente “ELSE” mais limitado seu acesso. o que preciso e pegar o id do usuário que esta logado salvar ele e mandar para outro JFrame que deve aparecer num jTextField para conseguir gerar relatório, pro administrador do sistema ter controle de quem criou as informações, podendo verificar no relatório.
Precisava dessa ajuda, grato…

Opa eu construiria seu código da seguinte forma:

  1. Construiria uma classe Usuario:

     public class Usuario  {
    
     private Short idUsuario;
     private String nome;
     private String perfil;
    
      public Usuario(){
      }
    
      public String getNome() {
          return nome;
      }
    
      public void setNome(String nome) {
          this.nome= nome;
      }
    
      public String getPerfil() {
          return perfil;
      }
    
      public void setPerfil(String perfil) {
          this.perfil= perfil;
      }
     }
    
  2. Colocaria valor de retorno e entrada no método logar, e adicionaria ao instanciaria a classe Usuario, e preencheria os atributos, assim:

     public void logar(String login, String senha) {
         String sql = "select * from tbusuario where login =? and senha=?";
         try {
             pst = conexao.prepareStatement(sql);
             pst.setString(1, login);
             pst.setString(2, senha);
             rs = pst.executeQuery();
             Usuario usuario; 
             if (rs.next()) {
                 usuario = new Usuario(); // importante construi-lo aqui
                 usuario.setPerfil(rs.getString(16)); // campo na coluna 16 (o_O ')
                 usuario.setNome(rs.getString(2));
             }
             return usuario; 
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null, e);
             return null;
         }
     }
    
  3. Na janela de validação chamaria o método da seguinte forma ao apertar no botão, ou seja la qual evento vc use:

     UsuarioControll controll = new UsuarioControll(); // esta classe é a classe DAO responsavel pela comunicação com o banco
     Usuario usuario = controll.logar(txtUsuario.getText(),txtSenha.getText()); // envia os parametros e     recebe em uma variavel do tipo Usuario
     if(usuario != null){
          new TelaPrincipal(usuario).setVisible(true); // perceba que a tela principal esta recebendo o   usuario como entrada
          this.dispose();
     } else {
          JOptionPane.showMessageDialog(null, "Usuario ou senha invalido!");
     }
    
  4. Agora devo colocar valor de entrada na TelaPrincipal, para isso alteramos o construtor:

     public class TelaPrincipal extends javax.swing.JFrame {
    
        public TelaPrincipal(Usuario usuario) {
         
           if (usuario.getPerfil().equals("Administrador")) {
                 menuCadOcorrencia.setEnabled(true);
                 menuConOcorrencia.setEnabled(true);
                 menuCadUsuario.setEnabled(true);
                 menuConfiguracaoAgendaTelefonica.setEnabled(true);
                 jlUsuario.setText(usuario.getNome());
                 jlPerfilUsuario.setText(usuario.getPerfil());
             } else if (usuario.getPerfil().equals(("Lider")) {
                 menuCadOcorrencia.setEnabled(true);
                 menuConOcorrencia.setEnabled(true);
                 jlUsuario.setText(usuario.getNome());
                 jlPerfilUsuario.setText(usuario.getPerfil());
             } else {
                 menuCadOcorrencia.setEnabled(true);
                 jlUsuario.setText(usuario.getNome());
                 jlPerfilUsuario.setText(usuario.getPerfil());
             }
       }
    

    }

Espero ter ajudado, duvidas pode questionar que estarei a disposição. :grinning:

Obrigado amigo deu certo, tudo de bom.