当前位置: 代码迷 >> Java相关 >> [求助]图形移动问题
  详细解决方案

[求助]图形移动问题

热度:327   发布时间:2007-06-18 18:22:37.0
[求助]图形移动问题


我的本意是写个测试程序,程序结果显示屏幕上出现一个移动的小黑格子,结果小黑格经过的地方都出现了黑色(参见我上传的图片)。程序代码如下,请教高手为什么会出现这种情况。

import java.awt.*;

class move1 extends Frame{
int locationX=20,locationY=20; //方块的其始坐标

Canvas mycanvas=new Canvas();

move1(){ //构造函数
this.add(mycanvas);
this.setSize(300,300);
this.setVisible(true);
}
public void paint(Graphics g){ //绘图并使之移动
g=mycanvas.getGraphics();
g.setColor(Color.black);
g.fillRect(locationX++,locationY++,10,10);
try
{
Thread.sleep(100);
}
catch(InterruptedException e){}
repaint();
}

public static void main (String[] args) {
new move1();
}
}


搜索更多相关的解决方案: 图形  

----------------解决方案--------------------------------------------------------

首先你的代码就不太好,哪有在paint里面调用repaint的,那岂不是无限循环,永远返回不了

你应该起个线程去repaint

另外,你不想看到那个黑点,你就在paint方法最开始调用super.paint(g);

不过,不推荐在JFrame里面直接画,最好是在JPanel上画,然后重写paintComponent方法


----------------解决方案--------------------------------------------------------
汗……图片超过512K不能上传。有心帮忙的朋友请自己编译一下代码就可以看见我描述的现象了。
----------------解决方案--------------------------------------------------------
以下是引用千里冰封在2007-6-18 18:24:46的发言:

首先你的代码就不太好,哪有在paint里面调用repaint的,那岂不是无限循环,永远返回不了

你应该起个线程去repaint

另外,你不想看到那个黑点,你就在paint方法最开始调用super.paint(g);

不过,不推荐在JFrame里面直接画,最好是在JPanel上画,然后重写paintComponent方法

另外,你不想看到那个黑点,你就在paint方法最开始调用super.paint(g);
受教了。不过不大明白这话。


----------------解决方案--------------------------------------------------------
父类的paint负责清除当前的画布

所以你每次画都是新的
----------------解决方案--------------------------------------------------------
楼主与JavaEye的longrm是同一个人?
这个帖里面我已经给出解释了:http://www.javaeye.com/topic/91674

----------------解决方案--------------------------------------------------------

longrm是谁不知道,但这家伙不仅问问题的方式和我差不多,连写的程序都差不多,长见识了.


----------------解决方案--------------------------------------------------------
恩恩,看了你的回答,很不错.
----------------解决方案--------------------------------------------------------
  相关解决方案