CardLayout获取所选卡的名称

时间:2011-06-28 11:49:14

标签: java swing cardlayout

如何在卡片布局中获取所选面板的字符串标识符。

2 个答案:

答案 0 :(得分:12)

CardLayout不知道当前所选面板是什么。 在调用show()方法时,你应该自己将它保存在内存中。

答案 1 :(得分:8)

CardLayout不允许您这样做。但是,您应该能够访问CardLayout的顶部面板。

因此,稍微解决一下,为每个添加的面板命名,等于字符串标识符。这样你就可以获得顶级卡,并得到它的名字。你就是这样做的:

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