Alternando entre JPanels

Estou tentando fazer um jogo. Há várias telas diferentes no jogo, como o menu principal e a tela real do jogo. Cada um desses é uma extensão jpanel separada. Eu adicionei cada um deles ao meu JFrame, que é uma classe chamada Game. Na minha aula de jogo eu tenho os seguintes métodos

public void addPanel( JPanel p ) {
    panels.add( p ); // An array of all the different panels I need
    this.getContentPane().add( p );
}

public void switchToPanel( JPanel p ) {
    for ( JPanel somePanel : panels ) {
        somePanel.setVisible( false );
    }

    p.setVisible( true );
    repaint();
}

O ponto é que eu tenho muitos painéis diferentes e quando eu preciso mostrar um em particular, como uma tela de menu, eu chamo switchToPanel (myPanel). Basicamente apenas escondendo cada painel e, em seguida, mostrando o que eu preciso ver. O único problema é que esses painéis não estão aparecendo quando eu alterno para eles. O único que vai aparecer é o painel que eu adicionei por último. Em Objective C eu uso essa técnica para alternar entre as visualizações o tempo todo e nunca tive problemas. Esse tipo de coisa não é permitido em java?

Edit: agora eu estou chamando repaint () depois de mudar, mas ainda não está funcionando

questionAnswers(3)

yourAnswerToTheQuestion