如何更改向量中元素的排序?

时间:2011-12-08 03:55:08

标签: java

我有一个水果类型的矢量。我可以在绘图画布上插入不同类型的水果。如果我有两个重叠的水果,我希望能够在选择之后提高水果,使其现在看起来好像是在其他水果之上。

我的基本想法是在按下jbutton之后调用raiseFruit()。我创建一个等于所选果实的临时变量集,然后尝试将其设置为等于(a + 1)处的果实...所以向量中的下一个位置。然后我将其设置为临时变量。我认为这是正确的想法?

public void raiseFruit() { //raisefruit button
    if (_fruitIsSelected==true) {
        for (int i=0; i<_storedFruit.size() - 1; i++) {
            FunFruit a = _storedFruit.get(i);
            FunFruit b = _storedFruit.get(i + 1);
            if (_storedFruit.get(i+1)!=null) {
                FunFruit temp = a;
                _storedFruit.get(i) = _storedFruit.get(i+1);
                a=b;
                b = temp;
                //_storedShapes.setElementAt(_storedShapes.get(i+1), i);
                //_storedShapes.setElementAt(_currentShape, i+1);
                repaint();
            }
        }
    }
}

我确实尝试使用setElementAt它会起作用,但是如果我再次按下“raisefruit”它会使它前面的元素完全消失。我刚刚发布了上面的代码,其中的部分一直在使其前面的元素消失。而不是“a = b”我试图在变量a中的向量中设置什么等于变量b的向量中的whats。除此之外,我不断收到“左手边必须是变量”的错误。因为我知道只是设置a =只是更改指针。我也没有得到如何在矢量中实际更改它,没有前面的水果元素被删除。

1 个答案:

答案 0 :(得分:1)

您正在重新分配临时变量而不是列表。使用

_fruits.setElementAt(fruit, index);

在列表中设置元素而不是

_fruits.get(_currentSelectedFruit + 1) = temp;

其中您只是获取get返回的指针并将其分配给temp