首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swing CardLayout

Swing CardLayout
EN

Stack Overflow用户
提问于 2012-05-23 23:21:14
回答 1查看 629关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2012-05-23 23:56:50

下面是由addLayoutComponent(Component comp, Object constraints)执行的addLayoutComponent()CardLayout's实现。

代码语言:javascript
复制
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));
    }
}

CardLayout维护Card对象的向量(见下文)。当检测到名称冲突时,Card中具有相同名称的Component将替换为要添加的新Component。因此,具有特定名称的show()将显示使用该名称添加的最后一个组件。

代码语言:javascript
复制
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;
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10723016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档