2011-03-01 41 views
0

我有一個簡單的網格,無論用戶單擊哪個位置都放置一個正方形。網格和對窗格的訪問都保存在「遊戲」對象中。在Java中重繪與容器擺動

這工作:

private void buildClicked(int x, int y) { 
    panel.repaint(); 
    game.buy(x, y); 
} 

這不會觸發重繪:

private void buildClicked(int x, int y) { 
    game.getPanel().repaint(); 
    game.buy(x, y); 
} 

如果我做面板遊戲的公共變量,這不起作用或者:

private void buildClicked(int x, int y) { 
    game.panel.repaint(); 
    game.buy(x, y); 
} 

「getPanel」只返回頂部的「面板」對象所指的相同的自定義面板對象。

我想在遊戲對象包裝中包含面板。同樣,在「購買」功能中調用repaint函數不起作用。

爲什麼在上面的例子中「repaint」函數的行爲不同?

+2

你確定'panel == game.getPanel();' - 如果有一個自定義對象,確保你不重寫任何你不應該的東西。 – 2011-03-01 21:54:27

+0

同意,您可能會遇到誤解引用的問題 - 您認爲引用可見組件的變量實際上不是。儘管只是提供了一小段代碼,但很難說清楚。 – 2011-03-02 01:24:24

回答

1

我的問題下的評論是完全正確的。我一直在Game對象和窗口本身中分別聲明面板。另一種情況是被新材料陷入困境,缺少一些基本的東西。謝謝!