Usar nome de login em outro form [Resolvido]

Estou fazendo uma tela de login com usuário e senha e depois de logar gostaria de armazenar o nome do login em uma String de uma classe separada para poder utilizar esse nome em outros formulários (tela principal, vendas, pagamentos, etc), ou seja, assim que fizer o login o nome do usuário ficaria disponível em outra classe para ser utilizado em outros formulários abertos futuramente. A melhor maneira seria jogar esse nome de login em outra classe e usar get e set ? Ou alguém sabe uma maneira melhor ?

Bom dia Casardo.

Sim, a melhor maneira é fazer o que voce disse, ou seja encapsular a variável (usar get e set).

Aconselho voce criar uma variável stática na classe principal, e é claro, ao encapsular com get e set, estes métodos também tem que ser estáticos.

Mas por quê utilizar a variável e os métodos estáticos :?: :?: :?:

Por duas razões, a primeira é que voce não precisará criar instâncias da classe principal para acessar o método get e o set, bastando tão somente fazer referência a eles com o nome da classe, e a segunda é que a variável que voce criar com um nome de “user” ou “usuario” terá um valor único dentro da classe, ou seja, se ela não fosse estática voce poderia correr o risco de criar várias instâncias da classe principal cuja a variável “user” teria valores diferentes para cada instância. Sendo ela estática, ela passa a ser apenas membro de classe, e não de instância, então terá um único valor armazenado.

Além da variável “user_log”, criei também a variável “profile_log”, onde além do usuário, carregado também o seu perfil se “Administrador”, “Usuário avançado” e etc.

Eis o exemplo.


public class FramePrincipal extends JFrame {
   ......
   ......
   private static String user_log, profile_log;

   ....
   ....
   public static String getUser_log(){
        return user_log;
    }

    public static void setUser_log(String user_log){
        FramePrincipal.user_log = user_log;
    }

    public static String getProfile_log() {
        return profile_log;
    }

    public static void setProfile_log(String profile_log) {
        FramePrincipal.profile_log = profile_log;
    }
    
    .....
    .....
}

Agora na hora do login, em caso de autenticar o usuário, voce pode utilizar os métodos com o nome da classe, assim:

     ....
     // Atribuindo o valor a variável na hora do login
     FramePrincipal.setUser_log("Usuário que vem do banco");
     FramePrincipal.setProfile_log("Perfil do usuário que vem do banco");
     .....

     // Para acessar o valor do usuário no JTextField txtUsuario.
     txtUsuario.getText(FramePrincipal.getUser_log());
     .....
     .....
 

Um abraço.

Bom dia Discorpio.

Já fiz o teste usando o seu exemplo e funcionou maravilhosamente bem. :smiley:
Ficou perfeito. E além do seu exemplo eu gostei muito da sua explicação, já tinha lido muito sobre get e set e só postei aqui porque já estava até desanimado de ler muita coisa e não conseguir entender.

O que eu estava fazendo era justamente o contrário. Eu criava instâncias da classe principal e sempre me retornava “null”.
Com a sua explicação eu consegui entender e já deu certo. Fiquei animado novamente, pois, já estava parado nesse problema um tempão. :smiley:

Muito obrigado pela resposta rápida e precisa.
Espero que alguém também possa te ajudar de alguma forma quando você precisar tirar alguma dúvida, da mesma maneira que você me ajudou.
Abraços.

Olá Casardo.

De nada.

Com certeza, um dia vou precisar, e quem sabe, se será você que irá me ajudar.

Não se esqueça de colocar lá no título do post a palavra [color=darkblue]"[Resolvido]"[/color] entre colchetes.

Um abraço.