上下移动项目

时间:2014-08-27 14:25:31

标签: java gwt

我希望在按钮单击后向上或向下移动列表中的所选项目,我使用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);
            }
        }

选择项目后点击&#34; up&#34;按钮,我成为向下移动的选定项目,而不是向上移动(与所选项目之前的项目的位置一起更改) 之前:

item1
item2
**item3** 
item4

选择item3之后我希望它将在item2位置而item2下降(位置变化)

像:

item1
**item3**
item2
item4

&#34; down&#34;按钮是相同的,所选项目将转到列表的末尾,而不只是使用所选项目之后的项目更改位置。

有谁能告诉我这里我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

来自documentation(强调我的):在项目列表框中添加项目,为项目指定初始值

如您所见,第二个参数指定添加项目的索引。但是,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);
    }
}

我也冒昧地修改你的索引数学。