这段代码在Gwt中,但如果您只是了解Java,那么您仍然可以回答这个问题。
好的,我有2个面板:myPanel1& myPanel2,然后我多次将myPanel2添加到myPanel1中
myPanel1.add(myPanel2);
myPanel1.add(myPanel2);
myPanel1.add(myPanel2);
myPanel1.add(myPanel2);
....
然后我计算myPanel1
System.out.println("No of Widgets inside myPanel1: "+ myPanel1.getWidgetCount());
结果是" No of Widgets inside myPanel1: 1
"
为什么myPanel1中的Widgets数量仍为1,即使我们多次将myPanel2添加到myPanel1中?
答案 0 :(得分:6)
我不是GWT开发人员,但我怀疑这是在调用Panel.add(Widget)
来记录这些步骤(强调我的):
必须按正确的顺序进行几项重要操作才能正确添加或向面板插入Widget。并非所有这些步骤都与每个小组相关,但必须考虑所有步骤。
- 验证:执行任何健全性检查以确保Panel可以接受新的Widget。示例:检查插入时的有效索引;如果有最大容量,请检查Panel是否已满。
- 调整重新插入:某些面板需要处理Widget已经是此Panel的子级的情况。示例:执行重新插入时,可能需要调整索引以考虑Widget的删除。请参阅ComplexPanel.adjustIndex(Widget,int)。
- 分离子项:从现有父项中删除小组件(如果有)。大多数Panel都会在Widget上调用Widget.removeFromParent()。
- 逻辑附件:应更新Panel的任何状态变量以反映新Widget的添加。示例:Widget将以适当的索引添加到Panel的WidgetCollection中。
- 物理附件:小部件的元素必须直接或间接地物理连接到Panel的元素。
- 采用:呼叫采用(Widget)完成添加作为最后一步。
醇>
换句话说,当您向一个面板添加内容时,它会从当前部分的任何面板中删除,如果有的话。
说实话,不清楚你的期望是什么效果 - 你仍然只有两个对象......对于一个小部件来说,它意味着意味着在一个面板多次?如果您想要多个小部件,请创建多个对象。