开发者

CardLayout get the selected card's name

How can I get the string identifier of开发者_如何学C the selected panel in card layout.


The CardLayout does not know what the currently selected panel is. You should keep this in memory yourself, when calling the show() method.


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());
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜