当您添加两张具有相同标识符的卡片时,卡片布局的默认行为是什么。例如,如果panel1
添加了哪个。稍后在程序中,我添加panel2
了相同的字符串标识符。卡组中的默认行为是要替换panel1
的吗?panel2
谢谢
问问题
633 次
2 回答
4
下面是由 执行的CardLayout's
实现。addLayoutComponent()
addLayoutComponent(Component comp, Object constraints)
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
对象向量(见下文)。看起来当检测到名称冲突时,Component
具有Card
相同名称的名称被替换为新Component
添加的名称。因此,show()
使用特定名称将显示使用该名称添加的最后一个组件。
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;
}
}
于 2012-05-23T15:56:49.687 回答
2
您可以添加多张具有相同标识符的卡片。您只能 [edit]仍然[ /edit] 导航到两者。 show(Container, String)
显示面板添加 [edit] first last [/edit]。
卡斯帕
于 2012-05-23T15:29:53.377 回答