Java 摆动卡片布局

Java 摆动卡片布局,java,swing,indexing,cardlayout,Java,Swing,Indexing,Cardlayout,添加具有相同标识符的两张卡时,cardlayout的默认行为是什么。例如,如果添加了panel1。稍后在程序中,我添加了具有相同字符串标识符的panel2。是否将卡堆栈中的panel1替换为panel2的默认行为? 谢谢您可以添加具有相同标识符的多张卡。您只能[编辑]但仍然可以[编辑]导航到两者show(Container,String)显示添加的面板[edit]firstlast[/edit] Kasper您可以添加具有相同标识符的多张卡。您只能[编辑]但仍然可以[编辑]导航到两者show(C

添加具有相同标识符的两张卡时,cardlayout的默认行为是什么。例如,如果添加了
panel1
。稍后在程序中,我添加了具有相同字符串标识符的
panel2
。是否将卡堆栈中的
panel1
替换为
panel2
的默认行为? 谢谢

您可以添加具有相同标识符的多张卡。您只能[编辑]但仍然可以[编辑]导航到两者
show(Container,String)
显示添加的面板[edit]firstlast[/edit]

Kasper

您可以添加具有相同标识符的多张卡。您只能[编辑]但仍然可以[编辑]导航到两者
show(Container,String)
显示添加的面板[edit]firstlast[/edit]


Kasper

下面是
CardLayout的
实现
addLayoutComponent()
,由
addLayoutComponent(组件组件组件,对象约束)
执行


下面是由
addLayoutComponent(组件组件组件,对象约束)
执行的
addLayoutComponent()
CardLayout实现


你自己试试看,你会发现:)。。。我想你可以在文档中找到它,自己试试看,你会看到:)。。。我想你可以在文档中找到它
public void addLayoutComponent(String name, Component comp) {
    synchronized (comp.getTreeLock()) {
        if (!vector.isEmpty()) {
            comp.setVisible(false);
        }
        for (int i=0; i < vector.size(); i++) {
            if (((Card)vector.get(i)).name.equals(name)) {
                ((Card)vector.get(i)).comp = comp;
                return;
            }
        }
        vector.add(new Card(name, comp));
    }
}
class Card implements Serializable {
    static final long serialVersionUID = 6640330810709497518L;
    public String name;
    public Component comp;
    public Card(String cardName, Component cardComponent) {
        name = cardName;
        comp = cardComponent;
    }
}