`
iceliushuai
  • 浏览: 27360 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Java JPanel继承重写paint方法,无法清除原内容

    博客分类:
  • JAVA
阅读更多

根据android sdk中的snake sample来写一个swing版本。

想写一个snake程序,因为手上有一个Snake程序了,是Android版本的,最近想学习一下Android编程,所以下载了它的SDK,正好有一个SnakeSample。可是没有想到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
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java画图板大作业.zip

    同样,我们可以继承`JPanel`,重写`paintComponent(Graphics g)`方法,在这里进行图形的绘制。`paintComponent()`方法确保在绘制之前清除面板,避免了旧图像的残留。 5. **事件监听**: 在Java GUI程序中,事件...

    JAVA绘图程序源代码

    在实际应用中,我们通常会重写`paint()`或`paintComponent()`方法,使用Graphics对象进行绘图。 2. **Canvas组件**:`java.awt.Canvas` 是AWT库中的一个组件,它没有内置的布局和边框,因此非常适合用于自定义绘图...

    java绘图板的编程代码

    - **MyPanel** 类继承自 `JPanel`,重写了 `paint` 方法来实现自定义绘图逻辑。 - 在 `paint` 方法中,首先调用 `clearRect` 清除整个面板,然后通过 `drawPolygon` 方法绘制一个多边形。 ### 3. Java 数学计算与...

    基于java多线程的俄罗斯方块源代码

    在这个项目中,开发者可能使用了JFrame作为主窗口,JPanel作为画布,重写了JPanel的paintComponent方法来进行绘制。在paintComponent方法中,开发者会清除画布,然后根据当前的游戏状态重新绘制方块、背景和得分等...

    JAVA课程设计围棋对弈(含代码).pdf

    - 在棋子的子类中,重写`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)` 方法绘制时钟的基本结构,然后计算并更新时针、分针和秒针的位置,并进行绘制。 ### 五、计算指针位置 ...

    绘画:简单形状绘图(Java Swing)

    要实现自定义绘图,我们需要创建一个继承自`JPanel`的类,并重写`paintComponent()`方法。这个方法会在组件需要重新绘制时被调用,是我们进行图形绘制的舞台: ```java public class CustomDrawPanel extends ...

    2021-2022计算机二级等级考试试题及答案No.2424.docx

    1. `JPanel` 绘图:在 Java GUI 编程中,如果要自定义绘图,需要继承 `JPanel` 类,并重写 `paintComponent()` 方法,而非 `paint()` 或其他选项。在这个重写的方法里,调用 `super.paintComponent(g)` 来确保基本...

Global site tag (gtag.js) - Google Analytics