我在運行時更新2D數組中的JLabel時遇到問題。在JPanel上重繪/刷新JLabels
我正在開發的程序是Connect Four的變體。我創建了一個JLabels二維數組,它們都默認爲包含空白插槽圖像的ImageIcon。玩家1和2選擇他們的顏色,並且在玩家輪到時,他可以點擊將一塊物品放入一個柱子(重力導致該物品落到底部或直到它落在另一塊物品上)。
我很積極,我的addToColumn方法工作正常。我唯一的問題是,我似乎無法得到任何JLabel更新。以下是我正在處理的方法:
p1,p2和current是Player對象。 grid [] []是一個整數的二維數組,設置爲0,1或2以更容易跟蹤誰擁有哪些圖塊。 tiles [] []是我的JLabels二維數組。
public void addToColumn(int column) { // drop a tile in the specified column
int i = 0;
while (grid[column][5-i] != 0) i++; // move upward through the 6 rows of tiles
// until we find an empty one
if (current == p1) grid[column][5-i] = 1; // update to the current player's value
else grid[column][5-i] = 2;
tiles[column][5-i] = new JLabel(findColorIcon(current.getColor()));
tiles[column][5-i].setIcon(findColorIcon(current.getColor()));
repaint();
現在隨着最後兩行改變了的JLabel磚[] [],顯然我並不需要兩個,不知道哪種方式比較好...這只是一些什麼我已經試過,無濟於事。 (我的getColor()方法返回一個Color,並且findColorIcon(Color c)返回具有該顏色的tile的相應JLabel)。
,是的,我在我的paintComponent方法已經添加過:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
}
我一直停留在這一段時間,現在,我覺得我失去了一些東西明顯。有什麼建議麼?
有關您的特定問題的更好指導,請使用[sscce](http://sscce.org/)更新您的問題。 – trashgod 2011-04-02 09:49:34