CardLayout get the selected card's name

后端 未结 2 684
遇见更好的自我
遇见更好的自我 2021-01-05 04:00

How can I get the string identifier of the selected panel in card layout.

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-05 04:27

    The CardLayout does not allow you to do this. However, you should be able to access the top panel of the CardLayout.

    So a little work around is to give each added panel a name, equal to the string identifier. That way you can get the top card, and get it's name. This is 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());
    

提交回复
热议问题