CardLayout does not allow you to do this. However, you must have access to the top panel of CardLayout.
So, a little work is to give each added panel a name equal to a string identifier. This way you can get the top card and get its name. Here's how you do it:
final String CARD1 = "Card 1"; final String CARD2 = "Card 2"; JPanel panel = new JPanel(new CardLayout()); JPanel card1 = new JPanel(); card1.setName(CARD1); JPanel card2 = new JPanel(); card2.setName(CARD2); panel.add(card1); panel.add(card2); //now we want to get the String identifier of the top card: JPanel card = null; for (Component comp : panel.getComponents()) { if (comp.isVisible() == true) { card = (JPanel) comp; } } System.out.println(card.getName());
source share