我有一个水果类型的矢量。我可以在绘图画布上插入不同类型的水果。如果我有两个重叠的水果,我希望能够在选择之后提高水果,使其现在看起来好像是在其他水果之上。
我的基本想法是在按下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 =只是更改指针。我也没有得到如何在矢量中实际更改它,没有前面的水果元素被删除。
答案 0 :(得分:1)
您正在重新分配临时变量而不是列表。使用
_fruits.setElementAt(fruit, index);
在列表中设置元素而不是
_fruits.get(_currentSelectedFruit + 1) = temp;
其中您只是获取get返回的指针并将其分配给temp