在GWT中,在widget的方法remove是非常常用的,但請您好好注意一個小問題:
當你用循環(huán)remove時,請注意最好使用倒循環(huán),因為如果你要是用正循環(huán)的話,remove一個widget后,他的下個widget就會到他的“位置”,例如:
int count = widgetPanel.getWidgetCount() ;
for(int i = 0 ; i < count ; i ++ )
{
widgetPanel.remove(i) ;
}
這樣肯定會出異常的;
因為當你remove掉第一個widget后,第二個widget就變成第一個widget了,所以,當你認為remove掉第二個時,其實是把原來的第三個widget給remove掉了;
解決方案:
1.倒循環(huán):
int count = widgetPanel.getWidgetCount() ;
for(int i = count - 1 ; i >= 0 ; i -- )
{
widgetPanel.remove(i) ;
}
這樣就不會出現(xiàn)以上的情況:)
2.remove第一個;
int count = widgetPanel.getWidgetCount() ;
for(int i = 0 ; i < count ; i ++ )
{
widgetPanel.remove(0) ;
}
這種方法,也正說明了GWT轉(zhuǎn)換成javascript后的特性,它是根據(jù)remove的元素,在他父元素里的“位置”進行remove,這點是和Swing最大的區(qū)別,一定要注意喲:)