Criar classe Singleton para usuário

Boa tarde,

Estou tentando criar uma classe Singleton para Usuário, pois necessito do seguinte cenário: Após o usuário logar no sistema, na janela principal quero setar um label com o nome do usuário que está logado; quando esse mesmo usuário for preencher um formulário de atividades, o combobox do seu setor onde ele trabalha, já deve vir preenchido conforme o setor desse usuário.

Porém, não estou conseguindo fazer a lógica de utilizar o singleton, que é a maneira mais rápida e fácil para pegar esses dados.

Minhas Classes:

  • Usuário

    public String nome;
    public Setor setor;
    public String matricula;
    private String senha;

      public String getNome() {
          return nome;
      }
    
      public void setNome(String nome) {
          this.nome = nome;
      }
    
      public Setor getSetor() {
          return setor;
      }
    
      public Setor setSetor(Setor setor) {
          this.setor = setor;
          return setor;
      }
    
      public String getMatricula() {
          return matricula;
      }
    
      public void setMatricula(String matricula) {
          this.matricula = matricula;
      }
    
      public String getSenha() {
          return senha;
      }
    
      public void setSenha(String senha) {
          this.senha = senha;
      }
    
  • Classe LoginController

    @FXML
    public void entrar() {
    usuario = bd.getUsuarioMatricula(loginTextField.getText());

          if (loginTextField.getText() == null && senhaTextField.getText() == null) {
              Alert alert = new Alert(Alert.AlertType.ERROR);
              alert.setTitle("Erro de Usuário");
              alert.setHeaderText("Login e Senha em branco...");
              alert.setContentText("Entre em contato com a GETIG para dúvidas");
              alert.showAndWait();
              return;
          } else if (usuario != null) {
              if (!BCrypt.checkpw(senhaTextField.getText(), usuario.getSenha())) {
                  Alert alert = new Alert(Alert.AlertType.INFORMATION);
                  alert.setHeaderText("Login ou Senha não conferem, tente novamente\n");
                  alert.setContentText("Entre em contato com a GETIG para dúvidas");
                  alert.setTitle("Dados de Login não conferem");
                  alert.showAndWait();
                  System.out.println("Erro");
    
              } else {
                  System.out.println("Usário logado com sucesso!");
                  try {
                      abrirSistema();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          } else {
              Alert alert = new Alert(Alert.AlertType.ERROR);
              alert.setTitle("Erro de Usuário");
              alert.setHeaderText("Login não existe...");
              alert.setContentText("Entre em contato com a GETIG para dúvidas");
              alert.showAndWait();
          }
      }