java jpanel清空_Java JPanel繼承重寫paint方法,無法清除原內容

根據android sdk中的snake sample來寫一個swing版本。

想寫一個snake程序,因為手上有一個Snake程序了,是Android版本的,最近想學習一下Android編程,所以下載了它的SDK,正好有一個Snake的Sample。可是沒有想到Android程序和Swing程序的差別有這么的大。總的來說,我還是一個新手,在編程方面落后太多了啊。

用一個類繼承JPanel來作圖同時保存一些基本的信息,可是在測試中發現原先的繪圖並沒有被清除,執行起來的結果就是

L3VwbG9hZC9hdHRhY2htZW50LzEwMzYxMS8zOWFiOGYyOC00ZDhkLTNiNmItOTNiNy1jNWM4OTYxYTVkNTAucG5n

沒有能正常的重新繪圖,原來以為是數據區沒有清空,因為是用一個二維int的數據來存儲數據,為0則相應為空,1則繪紅色點,2繪黃色點,3繪綠色點。可是看了調試了一下程序,發現並不是這樣。因為在這方面也是新手,所以到網上找了一下,並沒有實際的效果。有一則帖子說在重寫JPanel paint時應該先調用父類的方法。看了一下我的程序,果然沒有寫super.paint(g); 寫上就OK了。

正常運行結果。

L3VwbG9hZC9hdHRhY2htZW50LzEwMzYxMy83YTMxMGRjMy0wZDhkLTMxMWYtYjE0Mi02ZDJkMGY1MjQyMDcucG5n

================================================================

public void paint(Graphics g) {//應該先調用父類的方法super.paint(g);for (int x = 0; x < mXTileCount; x += 1) {for (int y = 0; y < mYTileCount; y += 1) {if (mTileGrid[x][y] > 0) {g.drawImage(mTileArray[mTileGrid[x][y]], mXOffset + x* mTileSize, mYOffset + y * mTileSize, mTileSize,mTileSize, this);}}}}

不太清楚版權的問題,在程序中使用了google的圖片和部分的原代碼,在此表示感謝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值