[RESOLVIDO] Como obter a variável de um método?

Olá pessoal,
Eu gostaria de obter a variável idlogado presente dentro do método do botão de login para obter o id do usuário logado e finalmente colocá-lo em um get e usá-lo em outras classes, mas não estou tendo sucesso:

public class TelaLogin extends javax.swing.JFrame {
    public TelaLogin() {
        initComponents();
    }

    private void bLoginActionPerformed(java.awt.event.ActionEvent evt) {
        String idlogado = "";
        //código do login no botão (obtém-se o idlogado aqui)
    }

    String idlogado = bLoginActionPerformed.idlogado; //<-- aqui está o erro
    public String getIdLogado(){
         return idlogado;
    }
}  

erro%20variavel
Talvez seja uma dúvida básica por eu ainda estar aprendendo, mas qualquer ajuda é apreciada, obrigado.

o idLogado está em um botão? Ou vc quer clicar no botão e mostrar o idLogado?

É pq vc chamou o nome do método, que é um void (vazio), caso queira pegar o texto do botão, teria que fazer assim:

String idLogado = btLogin.getText();

caso queira chamar um método pra ter o retorno do id é assim

    public String getIdLogado(){
         return idlogado;
    }

Chamar

 idLogado = getIdLogado();

se bem que não faz muito sentido fazer esse método, já que a variável idLogado é global, qualquer método acessa.

Eu acho que um getter e setter nesse caso não é necessário.

1 curtida

Obrigado pela ajuda, mas na verdade não é o texto do botão que preciso. Quando vc clica no botão login, o banco de dados valida o login e dps obtem o idlogado do usuário que logou:

String sql = "select idusuario from usuario where nomeusuario ='"+txtLogin.getText()+"' and senha = '"+String.valueOf(txtSenha.getPassword())+"';";
System.out.println(sql);
PreparedStatement comandoSQL = conexao.prepareStatement(sql);
ResultSet resultado = comandoSQL.executeQuery();
if(resultado.next()){
    idlogado = null;
    idlogado = resultado.getString(1);//aqui consegue o idlogado

Mas estou precisando obter este idlogado fora deste método.
E se apenas crio o get como vc mostrou ele não consegue retornar a variável idlogado pq ela é local apenas para o método do evento do botão.
erro2

Entendi, vc pode passar esses dados via construtor.

Menu menu = new Menu(idLogado);
menu.setVisible(true);
dispose();

Aí no Menu, vc faria

private String idLogado;
public class Menu(String idLogado){
    ......
    initComponents();
    this.idLogado = idLogado;
}

Aí depois só usar o idLogado tranquilamente.

1 curtida

Cara… não entendi, essa classe Menu equivale à TelaLogin? Acho que isso está certo mas não peguei como usa.

vamos lá, vc quer passar seu id pra outra tela? Se sim, o Menu seria a tela nova

1 curtida

Vlw mano, funcionou aqui, agr ficou bem claro

1 curtida