Login com cadastro em java

Estou fazendo um projeto no qual eu tenho que fazer um cadastro de uma pessoa para ela poder fazer o seu login. Tenho as classes cadastro (na qual tem os atributos como login e senha), tenho a classe gerCadastro (onde fica declarado o arraylist e os métodos para o acesso do login), a janela JanCadastro(resposavel por chamar os métodos para fazer o cadastro) e a janela JanLogin(entrada do cliente com o cadastro realizado anteriormente).

O cadastro é feito certinho na janela JanCadastro. Fiz uma confirmação para não cadastrar pessoas com o mesmo cpf e esta funcionando. Porem quando tento entrar com o cadastro feito na outra janela, é como se o arraylist dos cadastros estivesse vazio, pois não encontra nenhum cadastro.

Isso esta ocorrendo em outros arraylist do meu programa também. As referencias estão feitas certas mas tem algo que esta faltando. Alguém pode me ajudar?

gerCadastros:

import java.util.List;
import java.util.ArrayList;
import javax.swing.JOptionPane;

public class GerCadastros{
  private Cadastros c;
  private List<Cadastros> bdCadastros = new ArrayList<Cadastros>();
  
  public List<Cadastros> getBdCadastros() {
    return bdCadastros;
  }
  
  public Cadastros cadCadastros(Cadastros c) {
    if (consultaCadastros(c) == null) {
      bdCadastros.add(c);
      return c;
    } else {
      return null;
    }
  }
  
  public Cadastros consultaCadastros(Cadastros c) {
    for (int i = 0; i < bdCadastros.size(); i++) {
      if (c.getCpf() == bdCadastros.get(i).getCpf()) {
        return bdCadastros.get(i);
      }
    }
    
    return null;	
  }

  public Cadastros login (Cadastros c) {
    for (int i = 0; i < bdCadastros.size(); i++) {
      if ((c.getCpf() == bdCadastros.get(i).getCpf()) && (c.getSenha().equals(bdCadastros.get(i).getSenha()))) {
        return bdCadastros.get(i);
      }
    }
    
    return null;
  }
}

JanCadastro:

tem mais coisa mas o metodo que esta sendo usado é esse

public void cadastro() {
  cadastros = new Cadastros();
  cadastros.setCep(Integer.parseInt(txtCEP.getText()));
  cadastros.setCpf(Integer.parseInt(txtCPF.getText()));
  cadastros.setNome(txtNome.getText());
  cadastros.setEndereço(txtEndereço.getText());
  cadastros.setSenha(txtSenha.getText());
  cadastros = gerCadastros.cadCadastros(cadastros);
  
  if (cadastros == null) {
    JOptionPane.showMessageDialog(null, "Já exsite um cadastro com este cpf", "Erro de cadastro", 0);
  } else {
    JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso", "Cadastro OK", 1);        
  }
}

JanLogin:

private void BotEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
  JanPedido.getJanPedido().setVisible(true);
  dispose();
  
  cadastros = new Cadastros();
  cadastros.setCpf(Integer.parseInt(txtCpf.getText()));
  cadastros.setSenha(txtSenha.getText());
  cadastros = gerCadastros.login(cadastros);
  
  if (cadastros == null) {
    JOptionPane.showMessageDialog(null, "Cadastro não encontrado", "Login", 2);
  } else {
    JOptionPane.showMessageDialog(null, "Login realizado", "Login", 1);
    JanPedido.getJanPedido().setVisible(true);
    dispose();
  }
}

Os atributos de uma classe ficam disponíveis apenas em sua instância, se você está gerando outras está perdendo suas informações. Ou melhor dizendo: a sua lista bdCadastros está em uma instância de GerCadastros e você deve está criando outra na sua janela. A solução é você utilizar a mesma instância em ambas as janelas, haja vista que as informações estão apenas na memória; ou persistir essas informações em disco e depois consulta-las.