2011-12-08 65 views
0

我有一個向量類型水果。我可以在畫布上插入不同類型的水果。如果我有兩個重疊的水果,我希望能夠在選擇後提高水果,使其現在看起來好像在其他水果之上。如何更改矢量元素的排序?

我的基本想法是在按下jbutton後調用raiseFruit()。我創建了一個temp變量設置爲等於所選的水果,然後嘗試將其設置爲等於(a + 1)處的水果...以便向量中的下一個位置。然後我將其設置爲等於temp變量。我認爲這是正確的想法?

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中向量中的變量a等於變量b中向量中的數值。除此之外,我不斷收到一個錯誤,指出「左側必須是變量」。因爲我知道只是設置a =只是改變指針。我不知道如何在矢量內實際改變它,沒有刪除前面的水果元素。

+0

只是好奇,你在哪裏學習使用'Vector'?你確定你沒有閱讀過時的Java書籍/教程嗎?自從十多年以來,Vector矢量被認爲是一個遺留/過時的類。 – BalusC

+0

爲什麼一個矢量被認爲是一個過時的類?我學會了在高中的AP計算機科學課程中使用它們。 – Susie

+0

向量肯定不是過時的。儘管它們的用處與ArrayList或從Collections類中獲取的對象一樣好,但它們仍然具有其他類似類中不具備的功能。 – Crollster

回答

1

您正在重新分配您的臨時變量而不是列表。使用

_fruits.setElementAt(fruit, index); 

在列表中設置的元素,而不是

_fruits.get(_currentSelectedFruit + 1) = temp; 

中,你只是採取由得到返回的指針並將其分配給臨時