2014-08-27 92 views
0

我想以後的按鈕點擊列表中選中的項向上或向下移動,我使用GWT,這就是我以前做過:移動項目上下

@UiHandler("Up") 
    void UpClick(ClickEvent e) { 
    ListBox item; 
     int i=item.getSelectedIndex(); 
      if(i>0){ 
       // add duplicated item in the list 
       item.addItem(item.getItemText(i),String.valueOf(i-1)); 
       // make it the current item 
       i=i-2; 
       // delete the old occurence of this item 
       item.removeItem(i+2); 
      } 
     } 



    @UiHandler("Down") 
    void DownClick(ClickEvent e) { 
     int i=item.getSelectedIndex(); 
      if((i!=-1) && (i<item.getItemCount()-1)) { 
       item.addItem(item.getItemText(i),String.valueOf(i+1)); 
       i=i+2; 
       item.removeItem(i-2); 
      } 
     } 

後,我選擇項目,點擊「向上」按鈕,成爲我選擇的項目向下移動,而不是上升(與項目至極位置變化是所選擇的項目前) 前:

item1 
item2 
**item3** 
item4 

選擇項目3後,我想這將是在item2位置和item2下降(位置變化)

,如:

item1 
**item3** 
item2 
item4 

與「向下」按鈕是一樣的,所選擇的項目轉到列表的末尾,而不是僅僅改變位置下來是選定項目後,該項目。

有人可以告訴我我在做什麼錯嗎?

回答

1

您似乎對方法addItem(String, String)所做的事感到困惑。

documentation(Emphasis地雷):將項目添加到列表框中,爲該項目指定初始值

正如你所看到的,第二個參數是而不是指定了要添加項目的索引。但是,insertItem(String, int)方法確實指定了一個索引。你可能會想要使用它:

@UiHandler("Up") 
void UpClick(ClickEvent e) { 
    ListBox item; 
    int i=item.getSelectedIndex(); 
    if(i>0){ 
     // add duplicated item in the list 
     item.insertItem(item.getItemText(i),i-1); 

     // delete the old occurence of this item 
     item.removeItem(i+1); 
    } 
} 


@UiHandler("Down") 
void DownClick(ClickEvent e) { 
    int i=item.getSelectedIndex(); 
    if((i!=-1) && (i<item.getItemCount()-1)) { 
     item.insertItem(item.getItemText(i),i+2); 

     item.removeItem(i); 
    } 
} 

我也冒昧修復你的指數數學。

+0

謝謝glad3dr – Kaly 2014-08-27 15:47:03