根据android sdk中的snake sample来写一个swing版本。
想写一个snake程序,因为手上有一个Snake程序了,是Android版本的,最近想学习一下Android编程,所以下载了它的SDK,正好有一个Snake的Sample。可是没有想到Android程序和Swing程序的差别有这么的大。总的来说,我还是一个新手,在编程方面落后太多了啊。
用一个类继承JPanel来作图同时保存一些基本的信息,可是在测试中发现原先的绘图并没有被清除,执行起来的结果就是
没有能正常的重新绘图,原来以为是数据区没有清空,因为是用一个二维int的数据来存储数据,为0则相应为空,1则绘红色点,2绘黄色点,3绘绿色点。可是看了调试了一下程序,发现并不是这样。因为在这方面也是新手,所以到网上找了一下,并没有实际的效果。有一则帖子说在重写JPanel paint时应该先调用父类的方法。看了一下我的程序,果然没有写super.paint(g); 写上就OK了。
正常运行结果。
================================================================
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的图片和部分的原代码,在此表示感谢。
- 描述: 没有调用父类方法时
- 大小: 33.4 KB
- 描述: 调用后
- 大小: 19.2 KB
分享到:
相关推荐
同样,我们可以继承`JPanel`,重写`paintComponent(Graphics g)`方法,在这里进行图形的绘制。`paintComponent()`方法确保在绘制之前清除面板,避免了旧图像的残留。 5. **事件监听**: 在Java GUI程序中,事件...
在实际应用中,我们通常会重写`paint()`或`paintComponent()`方法,使用Graphics对象进行绘图。 2. **Canvas组件**:`java.awt.Canvas` 是AWT库中的一个组件,它没有内置的布局和边框,因此非常适合用于自定义绘图...
- **MyPanel** 类继承自 `JPanel`,重写了 `paint` 方法来实现自定义绘图逻辑。 - 在 `paint` 方法中,首先调用 `clearRect` 清除整个面板,然后通过 `drawPolygon` 方法绘制一个多边形。 ### 3. Java 数学计算与...
在这个项目中,开发者可能使用了JFrame作为主窗口,JPanel作为画布,重写了JPanel的paintComponent方法来进行绘制。在paintComponent方法中,开发者会清除画布,然后根据当前的游戏状态重新绘制方块、背景和得分等...
- 在棋子的子类中,重写`paint()`方法以绘制棋子图形。 - 注册`MouseEvent`监听器以处理双击吃子和右击悔棋的操作。 4. **应用架构**: - 主类继承自`javax.swing.JFrame`,作为整个应用的窗口框架,将棋盘和...
初始化小球的初始位置坐标,并重写`paint`方法来绘制小球。 ```java import java.awt.Graphics; import javax.swing.JPanel; class BallPanel extends JPanel { int x = 20; int y = 20; @Override public ...
### 四、重写 paint 方法 `paint(Graphics g)` 方法用于重绘组件。在该方法中,首先调用 `drawStructure(g)` 方法绘制时钟的基本结构,然后计算并更新时针、分针和秒针的位置,并进行绘制。 ### 五、计算指针位置 ...
要实现自定义绘图,我们需要创建一个继承自`JPanel`的类,并重写`paintComponent()`方法。这个方法会在组件需要重新绘制时被调用,是我们进行图形绘制的舞台: ```java public class CustomDrawPanel extends ...
1. `JPanel` 绘图:在 Java GUI 编程中,如果要自定义绘图,需要继承 `JPanel` 类,并重写 `paintComponent()` 方法,而非 `paint()` 或其他选项。在这个重写的方法里,调用 `super.paintComponent(g)` 来确保基本...