给出了两个对象:myPanel1& myPanel2,如果我们多次将myPanel2添加到myPanel1中,那么为什么myPanel1.getWidgetCount()仍然= 1;

时间:2014-04-05 07:43:12

标签: java gwt

这段代码在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中?

1 个答案:

答案 0 :(得分:6)

我不是GWT开发人员,但我怀疑这是在调用Panel.add(Widget)来记录这些步骤(强调我的):

  

必须按正确的顺序进行几项重要操作才能正确添加或向面板插入Widget。并非所有这些步骤都与每个小组相关,但必须考虑所有步骤。

     
      
  1. 验证:执行任何健全性检查以确保Panel可以接受新的Widget。示例:检查插入时的有效索引;如果有最大容量,请检查Panel是否已满。
  2.   
  3. 调整重新插入:某些面板需要处理Widget已经是此Panel的子级的情况。示例:执行重新插入时,可能需要调整索引以考虑Widget的删除。请参阅ComplexPanel.adjustIndex(Widget,int)。
  4.   
  5. 分离子项:从现有父项中删除小组件(如果有)。大多数Panel都会在Widget上调用Widget.removeFromParent()。
  6.   
  7. 逻辑附件:应更新Panel的任何状态变量以反映新Widget的添加。示例:Widget将以适当的索引添加到Panel的WidgetCollection中。
  8.   
  9. 物理附件:小部件的元素必须直接或间接地物理连接到Panel的元素。
  10.   
  11. 采用:呼叫采用(Widget)完成添加作为最后一步。
  12.   

换句话说,当您向一个面板添加内容时,它会从当前部分的任何面板中删除,如果有的话。

说实话,不清楚你的期望是什么效果 - 你仍然只有两个对象......对于一个小部件来说,它意味着意味着在一个面板多次?如果您想要多个小部件,请创建多个对象。